web自动化——Selenium 之执行js代码
一、javascipt
selenium执行js的方法,这里我们使用execute_script
调用:
- 不传参:driver.execute_script("js语句")
driver.execute_script("window.scrollTo(0,0)")
- 传参:driver.execute_script("js语句",参数)
login_ele=driver.find_element(By.XPATH,'//button[@class="el-button el-button--primary el-button--medium"]')
driver.execute_script('arguments[0].click();',login_ele)
- 传多个参数:driver.execute_script("js语句1","js语句2",参数1,参数2)
login_ele=driver.find_element(By.XPATH,'//button[@class="el-button el-button--primary el-button--medium"]')
driver.execute_script('arguments[0].click();','arguments[1]',login_ele,True)
二、点击
- 在JavaScript中有提供通过Id,classname等方式找元素,所以在定位元素时可直接用JavaScript语句找元素
driver.execute_script('document.getElementById("kw").click()')
- 对于Xpath这种定位元素方式时,可以通过Javascript传参处理。
1)先通过selenium定位找出元素
login_ele=driver.find_element(By.XPATH,'//button[@class="el-button el-button--primary el-button--medium"]')
2)然后把找到的元素传给Javascript参数arguments。argument[0]表示传进来的第一个参数
driver.execute_script('arguments[0].click()',login_ele)
三、滚动
方式一:window.scrollTo()
window.scrollTo(0,0) #滚动到最顶端
window.scrollTo(0,100) #滚动到100
window.scrollTo(0,document.body.scrollHeight) #从最顶滚动到最低端
window.scrollTo(document.body.scrollHeight,0) #从最低端滚动到最顶
document.body.scrollWidth #获取当前窗口的宽度
document.body.scrollHeight #获取当前窗口的高度
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")
driver.execute_script("window.scrollTo(0,0)")
方式二:通过weblement对象的方法location_once_scrolled_into_view将元素滚动到可见区域
# 找到页面元素
page_two_ele = driver.find_element_by_xpath('//div[@id="page"]//span[text()="2"]')
# 滚动到可见区载
page_two_ele.location_once_scrolled_into_view
方式三:通过JS代码将元素滚动到可见区域
移动到元素的底端与当前窗口的底部对齐:arguments[0].scrollIntoView(false)
移动到元素的顶端与当前窗口的顶端对齐:arguments[0].scrollIntoView(true)
driver.execute_script('arguments[0].scrollIntoView(false);',page_two_ele)
四、修改元素
- 设置元素属性
document.getElementByXX('XX').setAttribute('XX','XX')
- 移除元素属性
document.getElementByXX('XX').removeAttribute('XX')
- 获取元素属性的值
return document.getElementByXX('XX').属性
val=driver.execute_script("return arguments[0].style;",login_button_ele)
- 修改元素值
document.getElementByXX('XX').value('XX')
#写法一
login_ele=driver.find_element(By.ID,'kw')
driver.execute_script("arguments[0].value=arguments[1]",login_ele,'ningm')
#写法二
driver.execute_script('document.getElementById("kw").value="ningm"')