selenium常用的三种等待方式:sleep(),隐性等待,显性等待

发布时间:2026/9/3 20:18:43
selenium常用的三种等待方式:sleep(),隐性等待,显性等待 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, 要是隐性等待时间大于显性等待时间, 那么该句代码的最长等待时间等同于隐性等待时间。