参考文章链接:http://www.jb51.net/article/92684.htm
感谢分享
1.强制等待:通过Python中time包提供的sleep()方法设置固定的等待时间
2.隐式等待:其实就相当于设置全局的等待,在定位元素时,对所有元素设置超时时间。如果页面元素已经出现,但页面未加载完,其仍会继续等待,直到页面加载完成。隐式地等待一个无素被发现或一个命令完成,这个方法每次会话只需要调用一次,最大设置30秒
语法:driver.implicitly_wait(30)
3.显式等待:通过WebDriverWait类和该类的until()方法配合,实现灵活的等待。它的执行过程是,首先设置一个超时时间,程序每隔一段时间查看一次页面,知道until()方法中的条件成立,则执行下一步,否则继续等待,直到超过设置的超时时间,然后抛出异常TimeoutException。
这个类的路劲 from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait类实例化时需要传入的参数:driver:WebDriver实例
timeout:等待的最长时间
【poll_frequency】 :调用until或until_not中的方法的间隔时间,默认是
0.5
秒
【ignored_exceptions】:忽略的异常,如果在调用until或until_not的过程中抛出这个元组中的异常,
则不中断代码,继续等待,如果抛出的是这个元组外的异常,则中断代码,抛出异常。默认只有 NoSuchElementException。
until()方法需要传入的参数:
method: 在等待期间,每隔一段时间调用这个传入的方法,直到返回值不是
False
message: 如果超时,抛出TimeoutException,将message传入异常
#encoding=utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
#from selenium.webdriver.support.wait import WebDriverWait
browser=webdriver.Chrome()
browser.get("http://www.baidu.com")
browser.maximize_window()
#设置显式等待时间
wait = WebDriverWait(browser,10)
#定位到“设置”菜单,此处用到了显示等待“设置”元素
setting_menu = wait.until(lambda ele : ele.find_element_by_link_text("设置"))