1.测试用例编写
用例的关键要素:
1)导入依赖
2)创建driver
3)执行自动化步骤
4)断言
如下图是一个简单的demo:
self.driver.maximize_window()最大化窗口页面,一般会存在于setup方法中
如果不添加teardown原来跑完的页面不会进行自动退出的,原页面资源没有自动回收;因此如果不想让浏览器自动退出的时候就不用添加teardown方法;一般情况下是要加的
2.直接等待、隐式等待、显式等待
直接等待:直接导入time模块使用
隐式等待:
- 含义:就是在创建driver时,为浏览器对象创建一个等待时间,这个方法是得不到某个元素就等待一段时间,直到拿到某个元素位置。
- self.drivers.implicitly_wait(5),单位是秒
- 这个是全局的,只要写在开头,每个代码间的等待时间都是5秒
- 如果找到的元素,就不用等待5秒
- 有时候会导致明明找到元素,但是却报错了,隐式等待估计是识别到了这个元素可见,也就是expected_conditions.visibility_of_element_located,但不关注其他元素的属性,比如可点击
Self.driver.implicity.wait(5)隐式等待,打开新页面的时候动态的等待页面元素,如果等待1s或者2s的时候打开页面将继续执行,最大等待5秒钟,存在于全局的变量;而直接等待就是等待5s,如果没打开页面也会抛异常
缺点:1)全局的,因此如果有的页面等待时间较长,或者因为网络的原因、找不到元素等,一直处于等待中;2)
隐式等待不能判断页面的元素是否可点击的,想要判断还需要其他的方法⚠️
显式等待:
- 就是明确的要等到某个元素的出现或者是某个元素的可点击等条件,等不到,就一直等,除非在规定的时间之内都没找到,那么久跳出Exception
- 下面的代码演示了By的使用、WebDriverWait显示等待、expected_conditions的使用
- until(里面的函数返回值只有Ture和False)