欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

selenium的三种等待方式(显示等待,隐式等待,强制等待)简单了解与总结

时间:2023-04-28
1.强制等待(无条件等待)

使用方法:time.sleep(delay)

delay的单位为秒,delay设置多少秒页面就会等待多少秒(死等),这个方法很容易让线程挂掉,使程序抛异常,所以要慎用此方法。

使用举例:打开百度,强制等待5秒

#导入强制等待模块import timefrom selenium import webdriverwd = webdriver.Chrome()wd.get('https://www.baidu.com')#强制等待5秒time.sleep(5)

2.显式等待(有条件等待)

当等待的条件满足后(一般用来判断需要等待的元素是否加载出来),就继续下一步操作。等不到就一直等,如果在规定的时间之内都没找到,那么就跳出Exception。

使用显示等待前需先导入显示等待所需模块和等待条件

#显式等待模块from selenium.webdriver.support.ui import WebDriverWait#显式等待条件from selenium.webdriver.support import expected_conditions as EC

使用举例:

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECwd = webdriver.Chrome()wd.get('http://www.baidu.com')#wd是webdriver对象,10是最长等待时间,0.5是每0.5秒去查询对应的元素。until后面跟的等待具体条件,EC是判断条件,检查元素是否存在于页面的 DOM 上。login_btn=WebDriverWait(wd,10,0.5).until(EC.presence_of_element_located((By.ID, "s-top-loginbtn")))#点击元素login_btn.click()

3.隐式等待(无条件等待,在一个时间段内等待)

一次设置,全局生效。不要当作固定等待使用,不要每次需要等待时都写一次隐式等待。隐式等待设置了一个最长等待时间,在规定时间内网页加载完成(也就是一般情况下你看到浏览器标签栏那个小圈不再转就代表加载完成),则执行下一步,否则一直等到时间结束,然后执行下一步。

如果是只需等待页面中的一个元素加载就用显示等待,等待整个网页加载就用隐式等待。

使用方法:implicitly_wait(delay),delay的单位为秒

使用举例:打开www.qq.com,等待页面加载完成后,点击新闻链接

from selenium import webdriverfrom selenium.webdriver.common.by import Bywd = webdriver.Chrome()wd.get('http://www.qq.com')wd.implicitly_wait(10)wd.find_element(By.CSS_SELECTOR,'[href="http://news.qq.com/"]').click()

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。