selenium的三种等待方法
页面加载问题
Ajax技术,不确定时间
- implicitly_wait
- 一次设置永久有效
- 元素未加载会一直等待,时间过长
- WebDriverWait
- selenium提供得到显示等待模块引入路径
- 参数 driver - 传入的webdriver实例
- 参数 timeout - 超时时间:等待的最长时间
- 参数 poll_frequency - 调用until或者until_not中方法的间隔时间,默认0.5s
- 参数 ignore_exceptions - 忽略的异常
- 等待过程中有两个方法,until和until_not
- method - 每隔一段时间调用这个方法,直到返回值不是FALSE
- message 超过一定时间 超时抛出异常timeoutException 将message传入异常
- sleep.time()
- sleep 线程的休眠
from selenium import webdriver
from time import sleep
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
class WaitMethodTest(object):
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.get('http://www.baidu.com')
def sleep_wait(self):
self.driver.find_element_by_id('kw').send_keys('three_st')
sleep(2)
self.driver.find_element_by_id('su').click()
sleep(2)
self.driver.quit()
def implicitly_wait(self):
self.driver.implicitly_wait(10)
self.driver.find_element_by_id('kw').send_keys('three_st')
self.driver.find_element_by_id('su').click()
self.driver.quit()
def webdriver_wait(self):
wait = WebDriverWait(self.driver, 2)
wait.until(EC.title_is('百度一下,你就知道'))
self.driver.find_element_by_id('kw').send_keys('three_st')
self.driver.find_element_by_id('su').click()
self.driver.quit()
if __name__ == '__main__':
case = WaitMethodTest()
# case.sleep_wait()
# case.implicitly_wait()
case.webdriver_wait()