当前位置:   article > 正文

软件测试(自动化之web端自动化5——selenium等待机制)_selenium wite

selenium wite

上节讲了关于元素交互的几个基础操作。然后我们在不断的模拟用户交互的时候,有时会遇到一些问题。比如,点击刷新按钮后,页面刷新较慢,刷新的过程中,代码无法识别到元素,产生相关的报错。

这种场景我们通常是采用“等待”的方式去完成的。

这里我们介绍三种等待方式:

一、强制等待

所谓强制等待,就是指定一个时间,我们去固定这个时间等待,等待时间完成后,再进行下一步。

比如这里的 time.sleep()方法。

这个是为了方便我截图,在完成交互后,等待2s,展示页面,再去关闭会话。

上面介绍的强制等待呢,在某些场景是不太好用的。

比如一个页面刷新,可能要1-10s,你不知道它每次到底多少秒,为了保证脚本顺利跑完不报错,你可能会设置成最大值10s。那么就会导致脚本的运行效率极低,因为你每次都是按最大等待时长去进行等待的。

这里官方提供了2种等待方式——显式等待、隐式等待,可以在元素刷新出现后,停止等待,直接运行接下来的操作。

二、显式等待

WebDriverWait()

它允许您的代码暂停程序执行,或冻结线程,直到满足通过的 条件

这个条件会以一定的频率一直被调用,直到等待超时。

默认检测频率为0.5s,默认抛出异常为:NoSuchElementException。

  1. from selenium.webdriver.support.wait import WebDriverWait
  2. WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

driver:浏览器驱动
timeout:最长超时时间,默认以秒为单位
poll_frequency:检测的间隔步长,默认为0.5s
ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常

配合until()方法使用

WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)

  1. from selenium import webdriver
  2. from selenium.webdriver.support.wait import WebDriverWait
  3. from selenium.webdriver.support import expected_conditions as EC
  4. from selenium.webdriver.common.by import By
  5. WebDriverWait(driver, 20).until(EC.visibility_of_element_located(locator))

这里的visibility_of_element_located ,指元素存在且可见

三、隐式等待

implicitly_wait()

设置的全局等待,对页面中的所有元素设置加载时间,如果超出了设置时间的则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。

driver.implicitly_wait(10)

设置全页面超时时间为10秒

警告: 不要混合使用隐式和显式等待。这样做会导致不可预测的等待时间。例如,将隐式等待设置为10秒,将显式等待设置为15秒,可能会导致在20秒后发生超时。)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/910082
推荐阅读
相关标签
  

闽ICP备14008679号