自动化过程中有的页面元素加载慢或者需要等待特定条件执行后续步骤,此时需添加等待时间:

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!

最新文章

  1. Linux中设定umask的作用
  2. Bash的自动补全
  3. stdafx.h的作用
  4. Linux的sleep()和usleep()的使用和区别
  5. android开发实现静默安装(fota升级)
  6. LCIS tyvj1071 DP优化
  7. 话说 MAX_FILE_SIZE
  8. C#多线程编程(7)--锁
  9. Git diff 统计代码更改数量
  10. ef mysql
  11. [物理学与PDEs]第1章习题2 均匀带电球面的电场强度与电势
  12. note 12 集合Set
  13. pycharm sql语句警告
  14. cocos2dx spine之一 :spine缓存 (c++ & lua)
  15. Python中的实例方法、类方法、静态方法和普通方法
  16. springboot-32-使用mvc测试
  17. 【webserver】使用python实现webserver,支持上传下载文件
  18. 使用node.js的开发框架express创建一个web应用
  19. Code Signal_练习题_digitDegree
  20. RSS介绍、RSS 2.0规范说明和示例代码

热门文章

  1. 浅谈ORM操作
  2. Office 下载地址
  3. python 格式化时间含中文报错: 'locale' codec can't encode character '\u5e74'
  4. java——如何通过class调用该类的方法并获得返回值?(反射)
  5. JavaWeb xss攻击
  6. Android NDK开发 字符串(四)
  7. visual stdio使用
  8. C# 空字典遍历
  9. 性能测试工具LoadRunner25-LR之常用性能指标计算公式
  10. php乱码的解决方法