自动化测试的等待方式主要有三种:强制等待、隐式等待和显式等待。
1. 强制等待(Sleep)
通过在代码中使用Thread.sleep()方法来实现的,该方法会阻塞当前线程的执行,程序会暂停指定的时间。
这种方式没有条件判断,只是简单地等待固定的时间。
2. 隐式等待(Implicit Wait)
通过设置浏览器驱动的全局等待时间来实现的。当查找元素时,如果元素没有立即出现,驱动会等待指定的时间,然后再继续执行。
这种方式会在查找元素时自动等待一段时间,如果元素在指定时间内出现了,就会立即执行后续操作。
如果超过了指定时间,就会抛出找不到元素的异常。
3. 显式等待(Explicit Wait)
显式等待是通过在代码中设置等待条件来实现的。在使用显式等待时,可以指定等待的最长时间和轮询间隔,并设置等待的条件。
驱动会在等待的过程中不断地检查条件是否满足,如果满足就会立即执行后续操作,如果超过了指定的最长时间仍然不满足条件,就会抛出超时异常。【文末有配套视频教程和免费的资料文档领取】
三种等待方式的区别
1. 使用方式
强制等待是通过在代码中添加固定的等待时间来实现的,而隐式等待和显式等待是在初始化浏览器驱动时设置的等待时间或在代码中设置等待条件来实现的。
2. 等待条件
强制等待没有条件判断,只是简单地等待固定的时间。隐式等待通过判断元素是否出现来决定是否继续执行,而显式等待通过设置等待条件的满足与否来决定是否继续执行。
3. 灵活性
强制等待是固定时间的等待,不够灵活,不推荐广泛使用。
隐式等待是全局等待,适用于整个测试过程中都需要等待元素出现的情况。
显式等待更加灵活,可以根据不同的情况设置不同的等待条件,可以等待元素可见、可点击等等。
4. 等待时间
强制等待的等待时间是固定的,不会根据实际情况变化。
隐式等待和显式等待的等待时间可以设置,并且可以根据实际情况进行调整。
5. 异常处理
强制等待不会抛出任何异常。隐式等待在等待超时时会抛出找不到元素的异常。显式等待在等待超时或条件不满足时会抛出超时异常。
适用场景
1. 强制等待适用于简单的场景,或者在特定情况下需要固定的等待时间的场景。
例如,在执行某个操作后,需要给系统一定的响应时间来稳定运行。
2. 隐式等待适用于整个测试过程中需要等待元素出现的场景
在初始化浏览器驱动时设置一个全局的等待时间,减少在每个元素查找操作前都需要手动添加等待时间的工作量。
适合网页加载时间不确定,但元素总体上可预期相对稳定的场景。
3. 显式等待适用于更复杂的场景,需要根据不同的条件来等待元素出现或满足特定的条件。
通过设置等待条件和超时时间,可以在特定条件满足之前等待,或在超过指定时间后抛出异常。
适合需要等待特定元素状态变化,比如元素可点击、可见等情况。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
同时,在这我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看就行,希望对你有所帮助!【公众号:互联网杂货铺】免费领取软件测试资料。
【2024最新版】Python自动化测试15天从入门到精通,10个项目实战,允许白嫖。。。