大家今天跟大家聊聊我最近搞的一个小玩意儿——塞利姆(Selenium),这名字听着是不是有点像个人名?哈哈,是个自动化测试工具。
起因:
话说最近接了个小项目,需要频繁地测试网页上的各种功能,手动点点点,那真是点到手抽筋。而且稍微改动一下代码,就得重新测一遍,简直要崩溃。于是我就寻思,有没有什么办法能解放我的双手,让电脑自己去测试?
探索:
网上搜了一圈,发现塞利姆这家伙挺火的,说是可以模拟用户在浏览器上的各种操作,比如点击、输入、滚动等等。而且支持多种编程语言,我寻思着,Python我还是比较熟的,那就用Python来搞!
准备:
得安装塞利姆的Python库,直接pip install selenium
,搞定!然后,还得下载一个浏览器驱动,比如Chrome的ChromeDriver,这个要根据你Chrome浏览器的版本来选择,不然可能会出问题。下载好之后,把ChromeDriver放到一个合适的位置,记住路径,后面要用到。
开搞:
接下来就是写代码了。先导入selenium
库,然后创建一个浏览器对象:
from selenium import webdriver
driver = *(executable_path='/path/to/chromedriver')
这里executable_path
就是你ChromeDriver的路径。然后,就可以用方法打开一个网页了:
*('你的网址')
接下来就是定位网页元素了,比如按钮、输入框等等。塞利姆提供了多种定位方式,比如ID、Name、XPath、CSS Selector等等。我比较喜欢用XPath,感觉比较灵活:
button = *_element_by_xpath('//button[@id="myButton"]')
找到元素之后,就可以进行各种操作了,比如点击:
或者输入文本:
input_box = *_element_by_xpath('//input[@name="username"]')
input_*_keys('你的用户名')
遇到的坑:
搞事情的过程中肯定会遇到各种坑。比如,有时候网页加载速度慢,元素还没加载出来,代码就执行了,导致找不到元素。这时候,可以用方法等待一段时间,或者用WebDriverWait
显式等待:
from *.ui import WebDriverWait

from * import expected_conditions as EC
from *.by import By
element = WebDriverWait(driver, 10).until(
*_of_element_located((*, "myDynamicElement"))
还有,有时候网页上有多个相同的元素,定位的时候可能会定位到错误的元素。这时候,就要仔细分析XPath,确保定位到的是正确的元素。
成果:
经过一番折腾,终于把自动化测试脚本写好了。每次修改代码之后,只需要运行一下脚本,电脑就会自动测试一遍,省时省力,简直不要太爽!
塞利姆确实是个好东西,可以大大提高测试效率。不过要熟练掌握它,还需要多加练习,多踩踩坑,才能真正发挥它的威力。希望我的这回实践记录能对大家有所帮助,少走一些弯路。下次再见!
还没有评论,来说两句吧...