软件测试:Selenium 脚本编写注意点 (一)
2023-09-22 13:41:30
在使用 Python + Selenium 编写 UI 自动化脚本时,我们必须注意到以下几点,以确保脚本的有效运行。
一、睡眠时间
- 强制等待时间 sleep()
强制等待生效时间 = 等待时间 - 当前时间
-
必须导入 time 包后才可以使用。
-
强制等待生效时间 <0,脚本就会报错。
- 隐式等待时间 implicitly_wait()
-
不导入 time 包就可以使用。
-
隐式等待生效时间 >0 时,如果要查找的元素在等待时间内没有找到,那么脚本将抛出 NoSuchElementException 异常。
-
隐式等待生效时间 <0,脚本就会报错。
-
一个场景中只使用一种等待时间。
- 显式等待时间 WebDriverWait()
-
导入 time 包后才可以使用。
-
显式等待生效时间 >0 时,如果要查找的元素在等待时间内没有找到,那么脚本将继续执行。
-
显式等待生效时间 <0,脚本就会报错。
-
一个场景中只使用一种等待时间。
二、定位元素的优先级
- id
-
id 是最快的定位方式。
-
如果 id 找不到,那么就不可能找到该元素。
- name
-
比 id 稍慢,但比其他定位方式快。
-
如果 name 找不到,那么就不可能找到该元素。
- class name
-
比 name 慢,但通常比其他定位方式快。
-
class name 不唯一时,可以使用 find_elements() 方法定位所有匹配的元素。
- tag name
-
比 class name 慢,但通常比其他定位方式快。
-
tag name 不唯一时,可以使用 find_elements() 方法定位所有匹配的元素。
- link text
-
比 tag name 慢,但通常比其他定位方式快。
-
link text 是整个链接的文本。
- partial link text
-
比 link text 慢,但通常比其他定位方式快。
-
partial link text 是链接的一部分文本。
- xpath
-
比其他定位方式都慢。
-
xpath 是最灵活的定位方式。
-
xpath 可以定位任何元素。
三、断言
- assertEqual()
-
比较两个值是否相等。
-
如果不相等,那么脚本将抛出 AssertionError 异常。
- assertNotEqual()
-
比较两个值是否不相等。
-
如果相等,那么脚本将抛出 AssertionError 异常。
- assertTrue()
-
断言一个值是否为 True。
-
如果为 False,那么脚本将抛出 AssertionError 异常。
- assertFalse()
-
断言一个值是否为 False。
-
如果为 True,那么脚本将抛出 AssertionError 异常。
- assertIn()
-
断言一个值是否在列表中。
-
如果不在列表中,那么脚本将抛出 AssertionError 异常。
- assertNotIn()
-
断言一个值是否不在列表中。
-
如果在列表中,那么脚本将抛出 AssertionError 异常。
四、异常处理
- try...catch
-
try...catch 块可以捕获脚本运行过程中抛出的异常。
-
try 块中包含要执行的代码。
-
catch 块中包含捕获异常后的处理代码。
- finally
-
finally 块在 try...catch 块执行完毕后执行。
-
finally 块中的代码无论如何都会执行。