Selenium入门20 等待时间
自动化过程中有的页面元素加载慢或者需要等待特定条件执行后续步骤,此时需添加等待时间:
1 time.sleep() 固定等待时间,需import time
2 webdriver隐式等待 无需引入包
driver.implicitly_wait(10) 最多等待10s,10s内监测到元素则继续执行,超过10s抛出超时异常。driver生命周期内都有效
3 webdriver显示等待,需引包from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(driver, 10).until()或until_not() 10s内每500ms监测一次条件是否成立,超过10s超时
下面尝试未设置时间,设置固定时间,设置隐式等待和显示等待四种方式:
1 未设置等待时间,抛出异常未找到元素
#coding:utf-8 #等待时间 from selenium import webdriver from selenium.webdriver.common.keys import Keys import dr = webdriver.Firefox() dr.get("https://www.baidu.com") dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER) #未等待 dr.find_element_by_partial_link_text("Web Browser Automation").click() dr.quit()
2 设置固定等待时间2s
#coding:utf-8 #等待时间 from selenium import webdriver from selenium.webdriver.common.keys import Keys import time dr = webdriver.Firefox() dr.get("https://www.baidu.com") dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER) #固定等待时间 time.sleep(2) dr.find_element_by_partial_link_text("Web Browser Automation").click() dr.quit()
3 隐式等待
#coding:utf-8 #等待时间 from selenium import webdriver from selenium.webdriver.common.keys import Keys dr = webdriver.Firefox() dr.implicitly_wait(10) #设置页面元素的隐式等待时间10s dr.get("https://www.baidu.com") dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER) dr.find_element_by_partial_link_text("Web Browser Automation").click() dr.quit()
4 显示等待
#coding:utf-8 #等待时间 from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By dr = webdriver.Firefox() dr.get("https://www.baidu.com") dr.find_element_by_id("kw").send_keys("selenium",Keys.ENTER) #显示等待 element = WebDriverWait(dr,10).until( EC.presence_of_element_located((By.PARTIAL_LINK_TEXT,'Web Browser Automation')) ) element.click() dr.quit()
webdriver提供了很多预期条件:
the end!
当情绪低落,烦躁的时候,学技术并整理成博客能忘却所有烦恼。技术改变心境。