元素等待机制

本文探讨了在UI自动化测试中遇到元素定位问题时的解决方案,介绍了WebDriver提供的隐式等待和显示等待两种机制,详细解释了如何使用这些机制来提高测试的健壮性和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当用脚本定位元素或去验证程序的运行状态时,有时会发现找不到元素,可能是由于突然的资源受限或网络延迟引起的响应速度太慢导致的,这时测试报告就会返回测试失败的结果,为保障UI自动化测试的健壮性和可靠性,我们在测试脚本中引用延时机制,来使脚本的运行速度与程序的响应速度相匹配。WebDriver为这种同步提供了隐式等待和显示等待两种机制。
一:隐式等待
隐式等待为webdriver中的完整的一个测试用例或者一组测试的同步提供通用方法。对于解决网络延迟或利用ajax动态加载元素所导致的程序响应时间不一致是非常有效的。
设置隐式等待,webdriver会在一定时间内持续检测和搜寻DOM,以便查找一个或多个不是立即加载成功并可用的元素。默认超过时间设置为0.
webdriver类提供了implicitly_wait()方法来配置超时时间。设置等待时间后若在此时间内找不到元素将抛出一个NoSuchElementException的异常
二:显示等待
显示等待是webdriver中用于同步测试的另外一种等待机制。显示等待有更好的操控性,可为脚本设置一些预置或定制化的条件,等待条件满足后会进行下一步测试。
显示等待可只作用于仅有同步需求的测试用例。webdriver提供了webdriverwait类和expected_conditions类来实现显示等待。
expected_conditions类提供一些预置条件,来作为测试脚本进行下一步测试的判断依据,
expected_conditions类
1.element_to_be_clickable(locator):等待通过定位器查找的元素可见并且可用,以便确定元素是可用的,此方法返回到定位的元素。locator:一组(by,locator)
eg:WebDriverWait(self.driver,10).until(expected_conditions.element_to_be_clickable((BY.NAME,“is_subscribed”)))
2.element_to_be_selected(element):等待到指定元素被选中,element即webelement
eg:subscription=self.driver.find_element_by_name(“is_subscribed”)
WebDriverWait(self.driver,10).until(expected_conditions.element_to_be_selected(subscription)
3.invisibility_of_element_located(locator):等待一个元素在DOM中可见或不存在
eg:WebDriverWait(self.driver,10).until(expected_conditions.invisibility_of_element_located((BY.ID,“loading_banner”)))
4.presence_of_all_elements_located(locator):等待直到至少有一个定位器查找匹配到的目标元素出现在网页中。该方法返回定位到一组webelement
eg:WebDriverWait(self.driver,10).until(expected_conditions.presence_of_all_elements_located((BY.CLASS_NAME,“input-text”)))
5.presence_of_element_located(locator):等待直到定位器查找匹配到的目标元素出现在网页中或可以在DOM中找到。该方法返回一个被定位到的元素。
eg:WebDriverWait(self.driver,10).until(expected_conditions.presence_of_element_located(BY.ID,“search”)))
6.text_to_be_present_in_element(locator,text_):等待直到元素被定位到并且带有相应文本信息。
7.title_contains(title):等待网页标题包含指定的大小写敏感的字符串。该方法在匹配成功时返回True,否则返回False
8.title_is(title):等待网页标题与预期的标题相一致。该方法在匹配成功时返回True,否则返回False
9.visibility_of(element):等待直到元素出现在DOM中,是可见的,并且宽和高都大于0.一旦其可见的,该方法将其返回(同一个)webelement
10.visibility_of_element_located(locator):等待直到根据定位器查找的目标元素在DOM中,是可见的,并且宽和高都大于0.一旦其可见的,该方法将其返回(同一个)webelement。
总结:WebDriverWait类提供更加强大的自定义预期等待判定功能。se

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值