python之selenium三种等待方法

前提:css

咱们在作Web自动化时,有的时候要等待元素加载出来,才能操做,否则会报错
web

1.强制等待浏览器

2.隐式等待ui

3.显示等待spa

内容:code

一,强制等待
blog

这个比较简单,就是利用time模块的sleep的方法来实现utf-8

例子:ci

 1 # coding = utf-8
 2 from time import sleep  3 from selenium import webdriver  4 # 启动浏览器
 5 driver = webdriver.Chrome()  6 # 打开百度首页
 7 driver.get(r'https://www.baidu.com/')  8 # 等待3秒
 9 sleep(3) 10 driver.find_element_by_css_selector("#kw").send_keys("selenium") 11 # 退出
12 driver.quit()

 

这个就是强制等待3秒,无论你怎么样,就是给我停3秒,强制性的element

二,隐式等待

隐式等待就是浏览器会在内部执行等待,可是咱们可能看不出来他等待了

例子:

# coding = utf-8
from selenium import webdriver # 启动浏览器
driver = webdriver.Chrome() # 打开百度首页
driver.get(r'https://www.baidu.com/') driver.find_element_by_css_selector("#kw").send_keys("selenium") driver.find_element_by_css_selector("#su").click() # 隐式等待30秒
driver.implicitly_wait(30) result = driver.find_elements_by_css_selector("h3.t>a") for i in result: print(i.text) # 退出
driver.quit()

 

三,显示等待

由于隐式等待有缺陷,好比你想要元素加载出来就执行下面的事情,怎么办,这个要用显示等待了

显示等待要用到WebDriverWait,配合该类的until()和until_not()方法,就可以根据判断条件而进行灵活地等待了。它主要的意思就是:程序每隔xx检查一次,若是条件成立了,则执行下一步,不然继续等待,直到超过设置的最长时间,而后抛出TimeoutException

例子:

# coding = utf-8
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait # 启动浏览器
driver = webdriver.Chrome() # 打开百度首页
driver.get(r'https://www.baidu.com/') driver.find_element_by_css_selector("#kw").send_keys("selenium") driver.find_element_by_css_selector("#su").click() # 超时时间为30秒,每0.2秒检查1次,直到class="tt"的元素出现
text = WebDriverWait(driver,30,0.2).until(lambda x:x.find_element_by_css_selector(".tt")).text print(text) # 退出
driver.quit()
相关文章
相关标签/搜索