一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“Selenium 4.0版本使用初体验篇”。
在使用3.141版本长达三年之久后,Selenium团队在上个月2021年10月发布了4.0版本,并在上周发布了4.1版本。
那么终于发布的新版本上有何新内容呢,跟之前的使用有何差异呢?
修改细节不提,关注以下对测试人员影响较大的几项:
1. Find方法的改动。
原有的find_element_by_id(), find_element_by_name()等8种元素定位方式不建议使用了,而是改用find_element(by, value)方法。
4.0版本中调用该方法,pycharm里的提示:
替换为:
当然需要By类的导入。 同时要替换的还有find_elements()方法。
2. 创建浏览器驱动对象时的参数设置
查看文档会看到初始化方法里的很多参数标记为Deprecated:
如果按照老的方式进行参数传递,执行时会给出告警信息,而是通过service或者options参数传递:
DeprecationWarning: executable_path has been deprecated, please pass in a Service object
传递驱动路径老的写法:
driverpath = "./resources/chromedriver.exe"
self.driver = webdriver.Chrome(executable_path=driverpath)
新的写法:
service = Service(executable_path="../resources/chromedriver.exe")
self.driver = webdriver.Chrome(service=service)
3. 新版本提供打开新的窗口的功能
在老版本我们只能通过JS的方式打开新窗口,在新版本直接通过switch语句打开即可。
self.driver.switch_to.new_window()
4. ActionChains的使用的影响
之前的reset_actions方法是无效的,如今不需要任务列表的重置,每次perform后任务列表即清空了。
ele = self.driver.find_element(By.NAME,"username")
action.send_keys_to_element(ele, "aa")
action.perform()
time.sleep(3)
action.perform() # 只输入一次aa
time.sleep(3)
以上四项内容,是目前操作时涉及的操作。更多差异后续再做详解。大体来看,更改不大,但是项目中也不要随意升级哟,要修改的细节还是比较多的。