|
本文为在霍格沃兹测试开发学社中学习到的一些技术,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~
Selenium 提供了两种执行 JavaScript 脚本的方法:
execute_script:同步执行——常用
execute_async_script:异步执行
应用场景1:时间输入框
有些时间输入框控件,添加了 readonly 属性,限制该控件只读,不可写入,那就无法直接通过 send_keys() 输入内容。
对于这种情况的处理方式及步骤:
- 通过 JavaScript 脚本移除 readonly 属性
- 清空输入框内容
- 按时间格式输入信息

from selenium import webdriver
from time import sleep
driver = webdriver.Chrome() # 打开浏览器
driver.get("https://www.12306.cn/index/") # 跳转至测试页面
sleep(1)
js = "document.getElementById('train_date').removeAttribute('readonly')" # 编写 JavaScript 语句移除 readonly 属性
driver.execute_script(js) # 同步执行 JavaScript 语句
element = driver.find_element_by_id("train_date") # 定位元素
element.clear() # 清空内容
sleep(1)
element.send_keys("2020-08-10") # 输入内容
sleep(2)
driver.quit() # 关闭浏览器
应用场景2:操作滚动条
操作滚动条常用的 JavaScript 语句:
序号 | JavaScript 语句 | 描述 | 1 | document.documentElement.scrollTop=1000 | 移动到距离顶部 1000 的位置 | 2 | window.scrollTo(0, document.body.scrollHeight*0.5) | 按高度比例移动到绝对位置(x轴方向, y轴方向) | 3 | window.scrollTo(0, 1000) | 移动到绝对坐标位置(x轴方向, y轴方向) | 4 | window.scrollBy(0, -200) | 相对当前坐标移动相应距离(x轴方向, y轴方向) |
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome() # 打开浏览器
driver.get("https://www.douban.com/") # 跳转至测试页面
sleep(1)
js1 = "document.documentElement.scrollTop=500" # y轴方向 移动到距离顶部 500 的位置
js2 = "window.scrollTo(0, document.body.scrollHeight*0.5)" # y轴方向 移动到坐标为总高度的50% 的位置
js3 = "window.scrollTo(0, 1000)" # y轴方向 移动到高度为 1000 的位置
js4 = "window.scrollBy(0, -500)" # 相对当前位置向上移动 500
driver.execute_script(js1) # 执行 JavaScript 语句
sleep(3)
driver.execute_script(js2) # 执行 JavaScript 语句
sleep(3)
driver.execute_script(js3) # 执行 JavaScript 语句
sleep(3)
driver.execute_script(js4) # 执行 JavaScript 语句
sleep(3)
driver.quit() # 关闭浏览器
总结

推荐阅读:
只需Docker,环境问题再也不是测开路上的『坑』_霍格沃兹测试开发学社的博客-CSDN博客 |
|