在做自动化测试,设计测试用例的时候,有时下一步的操作会依赖上一步的结果或者内容,上一步操作成功之后才能进行下一步操作等,
这时候,我们就需要使用等待,来判断上一步操作是否完成,什么时候可以进行下一步操作。否则,上一步操作如果花费的时间较长,
还没有完成,就去进行下一步操作,这时就会产生无法定位到元素,元素状态不正确,数据校验结果不正确等异常。
在Selenium中常用的等待分为显示等待WebDriverWait(),隐式等待implicitly_wait(),强制等待sleep()三种。
二、Selenium的3种等待方式time.sleep(n)
强制等待n秒。Python本身的函数,包含在time包中,使用前需要导入time包。我们之前的实例中经常会使用这种等待,方便大家能看清脚本执行的结果。
这种等待方法十分笨拙,无论页面加载得如何,都必须等待n秒,可以说是十分不智能了。
WebDriverWait(n)
最长等待n秒,n秒内每隔一段时间去检查需要定位的元素是否存在,若存在则提前结束等待。也是WebDriver提供的等待方法,也被称为显性等待,
这种等待比隐性等待更智能了一些,无视整个页面的加载,只要需要的元素存在了,就结束等待。
implicitly_wait(n)
最长等待n秒,若n秒内页面加载完成,则提前结束等待。WebDriver提供的等待方法,也被称为隐性等待,比强制等待聪明了一点,但如果页面本身包含一个超大视频之类的文件,
就算我们需要定位的元素在最开始已经加载出来,却依旧要等待所有文件加载结束之后,脚本才能继续执行,依旧算是有些弊端。
三、强制等待(sleep)举个栗子,如下代码自动化打开百度首页,强制等待5秒,打印浏览器地址,并关闭浏览器。
from selenium.webdriver import Chrome import time driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe") driver.get('https://www.baidu.com/') #强制等待5秒 time.sleep(5) print(driver.current_url) driver.quit()