Selenium (强制等待、隐式等待、显式等待)三类等待的作用

强制等待:
不考虑任何因素,当代码执行到等待时,则强制性等待指定的时间,等待时间一到,再继续进行后续的代码。
在python中是基于time模块的sleep方法。
优点:
使用非常简单,不需要考虑任何逻辑。
缺点:
1、浪费时间。
2、无法保证页面一定可以正常加载完成。
3、使用过于固定,一个流程中,会频繁使用,容易造成代码的重复度非常高。
4、一般正常情况下不适用强制等待,只有在新手学习和调试的过程中使用。

隐式等待:
设置一个全局的等待,该等待设置对整个driver生命周期都能起到作用,,每一次操作都会调用隐式等待。

隐式等待结束的标志:
1、页面全部加载完成。
2、设置的等待时间截止。
隐式等待本身不会产生任何报错,但超时之后,容易产生NoSuchElementException的异常。
在python中,通过driver.implicitly_wait() ,设置隐式等待。
优点:
不用频繁进行等待的添加,一次添加终生有效,不会浪费过多的时间在等待中。
缺点:
1、无法对指定的元素进行等待。
2、浪费一定的时间。

显式等待:
对指定元素进行等待的一种等待方式,通过设置最大等待时间,检查频率对页面的元素来进行等待,一旦找到该元素,则停止等待,进入后续步骤,显示等待分为Untill和Untill_Not两种方式,Untill就是当条件为真,则进行后续操作,Untill_Not则相反。当最大等待时间达到,却依旧未找到元素,则会报TimeoutException异常。
在python中是基于selenium.webdriver.support.wait导入WebDriver来实现。
优点:
1、可以直接对元素进行定位,花费最少的时间来实现整个流程。
2、可以用于作为断言的检验之一。
缺点:
1、条件过于复杂
2、和强制等待类似,每行等待只执行一次,如果要进行过个元素的等待,则需要多次写入。
在这里插入图片描述
注:隐式等待和显式等待可以结合使用,等待一般取最长时间。

猜你喜欢

转载自blog.csdn.net/TuT0925/article/details/105148261