Selenium系列(6)- js处理方式
使用js的好处
- 解决大部分click()不生效的问题
- 页面滚动到底部,顶部
- 处理富文本、时间控件的输入
调用js方式
execute_script()
# 执行js
driver.execute_script("js语句")
滑动至页面底部
举个栗子:滑动百度搜索页至页面底部
driver.execute_script("document.documentElement.scrollTop=100000")
元素点击
# js中加入return 可返回元素
element = driver.execute_script("return document.getElementById('su')")
element.click()
🎉ATTENTION:
- js语句中加入return,可返回对应元素
- js语句中可添加多个js语句,用分号隔开,多个js语句会依次执行
处理时间控件
前置条件:
- 大部分时间控件都是readonly属性,需要手动去选择相应时间,自动化测试中对事件控件的操作可以使用js来操作
处理思路:
- 取消日期的readonly属性
- 赋值给value
- 用js实现以上两点,再用webview对js进行处理
以12306网站为例,修改控件时间(出发日期)
def test_datetime(self):
#以12306为例
self.driver.get("https://www.12306.cn/index/")
# 定位时间控件并去除readonly属性
time_ele = self.driver.execute_script("a = document.getElementById('train_date');a.removeAttribute('readonly')")
# 时间赋值
self.driver.execute_script("document.getElementById('train_date').value='2021-11-11'")
value = self.driver.execute_script("return document.getElementById('train_date').value")
print(value)
控制台输出结果为:
2021-11-11
# 修改成功
总结:js能实现的功能,都可以通过selenium实现!!!

浙公网安备 33010602011771号