selenium常用的三种等待方式:sleep(),隐性等待,显性等待
2026/9/18 15:14:08 网站建设 项目流程

1.强制等待

其一, 乃是最为简单且粗暴的法子, 即强行等待, 借助sleep(x), 迫使闪电侠等待x时长, 是这样进行的。

from selenium import webdriver import time # 会开会话 driver = webdriver.Chrome() driver.get('http://www.baidu.com') # 强制等待3秒 time.sleep(3) print(driver.current_url) driver.quit()

强行处在等待状态, 不论你所用的浏览器究竟有没有完成加载, 程序都必然要等待三秒钟, 待这三秒钟时间一到, 就接着去执行后续的代码, 并不推荐频繁运用这样的强制处于等候状况的方法。

2.隐性等待

第二种隐性等待,(x),整个周期有效,x单位秒

from selenium import webdriver # 会开会话 driver = webdriver.Chrome() # 隐性等待,最长等待30秒 driver.implicitly_wait(30) driver.get('http://www.baidu.com') print(driver.current_url) driver.quit()

设置了一个最长等待时间, 此为隐形等待, 若在规定时间内网页加载 , 那么就执行下一步, 不然的话一直等到时间截止, 随后再执行下一步, 要注意这里存在一个弊端, 即程序会持续等待整个页面加载完, 也便是通常情况下你看到浏览器标签栏那个小圈不再转动的时候, 才会执行接下去的步骤, 然而有时候页面中想要的元素早就加载完毕了, 只是由于个别js之类的玩意儿特别慢, 我依旧得等到页面全部弄好才能执行下一步。

3.显性等待

第三种办法是显性等待, 配合该类的until() 方法, 再配合该类的() 方法, 就能够依据判断条件进行灵活等待了。它主要的意思是: 程序每隔x秒看一眼, 倘若条件成立, 那就执行下一步, 不然便继续等待, 直至超过设置的最长时间,然后抛出。

from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 会开会话 driver = webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_id('kw').send_keys('selenium') driver.find_element_by_id('su').click() # 显性等待 WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,'//a[text()=" - Web Browser Automation"]'))) driver.find_element_by_xpath('//a[text()=" - Web Browser Automation"]').click() print(driver.current_url) driver.quit()

我们进行了隐性等待与显性等待的设置, 于其他操作里, 隐性等待发挥着决定性的作用, 在某些情况中, 显性等待起到主要作用, 然而需要留意的是, 最长的等待时间由两者当中较大的那个决定, 在此例子里是20, 要是隐性等待时间大于显性等待时间, 那么该句代码的最长等待时间等同于隐性等待时间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询