Selenium之显式、隐式等待
selenium自动化页面元素存在异常发生的原因有以下几点:
① 页面加载时间过慢,需要查找的元素程序已经完成,但是页面还未加载成功。此时可以加载页面等待时间。
② 查找的元素没有在当前的iframe或者frame中。此时需要切换会对应的iframe或者frame中才行。
③ 元素错误。
解决页面加载时间所引起的元素找不到,可以为页面设置加载时间。时间的设置分为以下三种:
1、显示等待 WebDriverWait()
2、隐式等待 implicitly_wait()
3、强制等待 sleep()
WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
说明: driver ----- WebDriver的驱动程序
timeout ------ 最长超时时间,以秒为单位
poll_frequency ------- 休眠时间的间隔(步长)时间,默认为0.5秒
ignored_exceptions ------- 超时后的异常信息,默认情况下抛NoSuchElementException异常
例如:
WebDriverWait(driver, 10).until(lambda driver:driver.findElement(By.Id("someId")));
每隔0.5秒扫描一次检查是否有id为somdld的元素,10秒后没找到就不找了,抛异常。
简单代码实现:
import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
element = WebDriverWait(driver, 10).until(lambda driver:driver.find_element_by_id("kw"))
element.send_keys("selenium")
# 添加智能等待
driver.implicitly_wait(30)
driver.find_element_by_id('su').click()
time.sleep()
driver.quit()
最新文章
- 史上最详细git教程
- IT关键词,发现与更新,点成线,线成面,面成体
- Log4Net在Windows服务中不能记录日志 z
- J2ee 巴巴网站制作(二)
- C#实现ByteBuffer类 .
- Python之路【第二十四篇】:Python学习路径及练手项目合集
- hdu1102 Constructing Roads (简单最小生成树Prim算法)
- Bootstrap_排版_标题
- Mac 下格式化U盘
- Android ListView 中的checkbox
- ReactiveCocoa / RxSwift 笔记一
- [转]WEB页获取串口数据
- 修正剑桥模型预测-用python3.4
- SQL Server 对比数据库差异
- Candy leetcode java
- 对datatable添加数据
- Python进阶(2)_进程与线程的概念
- IIC简介(转载)
- 第7课 Thinkphp 5 模板输出变量使用函数 Thinkphp5商城第四季
- 题解报告:hdu 4607 Park Visit(最长链)