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()

最新文章

  1. 史上最详细git教程
  2. IT关键词,发现与更新,点成线,线成面,面成体
  3. Log4Net在Windows服务中不能记录日志 z
  4. J2ee 巴巴网站制作(二)
  5. C#实现ByteBuffer类 .
  6. Python之路【第二十四篇】:Python学习路径及练手项目合集
  7. hdu1102 Constructing Roads (简单最小生成树Prim算法)
  8. Bootstrap_排版_标题
  9. Mac 下格式化U盘
  10. Android ListView 中的checkbox
  11. ReactiveCocoa / RxSwift 笔记一
  12. [转]WEB页获取串口数据
  13. 修正剑桥模型预测-用python3.4
  14. SQL Server 对比数据库差异
  15. Candy leetcode java
  16. 对datatable添加数据
  17. Python进阶(2)_进程与线程的概念
  18. IIC简介(转载)
  19. 第7课 Thinkphp 5 模板输出变量使用函数 Thinkphp5商城第四季
  20. 题解报告:hdu 4607 Park Visit(最长链)

热门文章

  1. PHP 高级面试115题汇总(含答案)
  2. [剑指offer] 二叉搜索树的后序遍历序列 (由1个后续遍历的数组判断它是不是BST)
  3. Vue img的src使用数据绑定不显示
  4. 删除TFS上的团队项目
  5. Apache中AllowOverride的详细配置使用
  6. PHP产生不重复随机数的5个方法总结
  7. gRPC asp.net core自定义策略认证
  8. 更换JDK
  9. C#音频截取与原文匹配
  10. kali linux 修改更新源和更新命令