在自动化测试中,等待是一个重要的技术,用于处理页面加载、元素定位、元素状态改变等延迟问题。
等待能够确保在条件满足后再进行后续操作,提高自动化测试的稳定性以及可靠性。
等待方式:显示等待、隐式等待、线程睡眠
1. 显式等待(Explicit Wait)
一种在自动化测试中使用的等待方式,它的特点是在代码中明确地指定一个特定的条件,等待直到条件满足后再继续执行后续代码。
显式等待通常用于等待特定的条件发生,比如等待元素可见、可点击、存在等。
通过显示等待,可以解决页面加载或元素定位的延迟问题,确保在条件满足后再进行后续操作,避免不必要的等待时间。
在使用显示等待时,需要结合Selenium的WebDriverWait和expected_conditions模块来实现。
WebDriverWait负责等待的设置,expected_conditions模块提供了一系列常用的条件,可以根据具体的需求选择合适的条件。
等待步骤:
1)初始化WebDriverWait对象,指定等待时间和浏览器驱动。
2)调用until方法,传入要等待的条件。
3)在until方法中,会不断地轮询条件是否满足,直到条件满足或超时时间到达。
4)如果条件满足,继续执行后续代码。
5)如果超过超时时间后仍未满足条件,则抛出TimeoutException异常。
在每次轮询中,显示等待会等待一小段时间,然后再次检查条件是否满足。
这个小段时间是通过指定的等待时间和轮询间隔来控制的,条件满足,则立即继续执行后续代码;如果条件不满足,则继续等待。
代码实例:
2. 隐式等待(Implicit Wait)
自动化测试中使用的等待方式,特点是在代码中设置一个等待时间,如果在指定的时间内找到了元素,则继续执行后续代码。超过了指定的时间仍未找到元素,则抛出异常。
在设置隐式等待后,在代码中使用了元素定位的方法,如find_element_by_xpath、find_element_by_id等,会在指定的等待时间内等待元素出现。
在执行每个元素定位操作之前,先等待一段时间,等待的时间由设置的等待时间决定。
这个等待时间是一个全局性的设置,对整个代码执行过程中的所有元素定位都生效。
代码实例:
隐式等待可能会导致等待时间过长或过短的情况,设置的等待时间过长,则会增加测试时间。
设置的等待时间过短,会导致找不到元素而抛出异常。
在使用隐式等待时需要根据具体的需求和网页加载速度来合理设置等待时间。
3. 线程睡眠(Thread.sleep)
在代码中使用Thread.sleep()
方法,暂停执行一段时间。
这种等待方式是固定的,不管条件是否满足都会等待指定的时间。
代码实例:
线程睡眠可以实现等待的效果,但不太推荐在自动化测试中大量使用它,因为线程睡眠是一个固定的等待时间,无法灵活地根据条件来进行等待。
如果条件提前满足,线程仍然会暂停执行指定的时间,导致测试效率低下和不稳定。
相比于线程睡眠,使用显示等待或隐式等待等更灵活的等待方式更加推荐。
感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取