selenium 等待时间3种方式
强制等待 sleep() -- 最不建议用
缺点:sleep(10)
网络不好的情况,到10秒就抛出异常
网络很好,1秒钟就响应了,白白等待多9秒
隐式等待 -- 也不是很理想的方法
implicitly_wait(秒)
设置最长等待时间,在这个时间内加载完成,则执行下一步
整个driver的会话周期内,设置一次即可,全局都可用
显性等待 -- selenium提供的
明确等到某个条件满足了,才进行下一步操作
2个类
WebDriverWait 显性等待类
WebDriverWait(driver, 等待时长,轮询周期).until/until_not
希望条件类
expected_conditions类,提供一系列期望发生的条件
判断什么时候满足条件
presence_of_element_located:元素存在
visibility_of_element_located:元素可见
element_to_be_clickable:元素可点击
实例
# -*- coding:utf-8 -*- 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 # 打开浏览器 options = webdriver.ChromeOptions() options.add_argument('disable-infobars') # 多加几行是为了去掉提示:Chrome正收到自动测试软件的控制 driver = webdriver.Chrome(chrome_options=options) driver.get('http://www.baidu.com') driver.maximize_window() # 最大化浏览器窗口 login_a_locator = '#u1 > a.lb' # 等待响应 print(u'等待响应...') WebDriverWait(driver,50,1).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, login_a_locator))) print(u'元素加载完成并点击该元素...') driver.find_element_by_css_selector(login_a_locator).click() # driver.close() print(u'结束')