自动化测试常用脚本-等待某个元素是否显示
在 UI 自动化测试中,由于会经常碰到页面加载较慢,导致元素可能识别不到的情况,因此,需要封装一个函数,动态的判断某个元素是否加载完成,才能继续
进行下一步操作,如下例子
from selenium.webdriver.support.wait import WebDriverWait
from selenium import webdriver
'''等待元素加载完毕'''
dr = webdriver.chrome()
def wait_element_is_displayed(self, element, way="id", wait_time=10):
"""
在10秒内,每隔1秒就判断元素是已经显示
:param attribute: 定位的元素
:param way: 定位的方式,默认使用 id 定位
:param wait_time: 等待的时间,默认10秒
return: 找到返回 True,找不到则返回 False
"""
try:
if way == "id":
WebDriverWait(self.dr, wait_time, 1).until(lambda x: x.find_element_by_id(element).is_displayed())
elif way == "xpath":
WebDriverWait(self.dr, wait_time, 1).until(lambda x: x.find_element_by_xpath(element).is_displayed())
elif way == "name":
WebDriverWait(self.dr, wait_time, 1).until(lambda x: x.find_element_by_name(element).is_displayed())
return True
except Exception:
return False
使用方式:
def test_wait_element_is_displayed(self):
# 使用 id 判断
self.wait_element_is_displayed("password")
# 使用 name 判断
self.wait_element_is_displayed("element", way="name")
# 使用 xpath 判断
xp = ".//input[@name='password']"
self.wait_element_is_displayed(xp, way="xpath")
以上只是使用了 id,name,xpath 这三种方式进行定位,其他定位方式可根据测试场景需要进行扩展
您对以上内容有何建议或意见,请写下来告诉我,谢谢!!!