Selenium常见异常解析及解决方案示范


Posted in Python onApril 10, 2020

pycharm中导入selenium报错

现象: pycharm中输入from selenium import webdriver, selenium标红

原因1: pycharm使用的虚拟环境中没有安装selenium,

解决方法: 在pycharm中通过设置或terminal面板重新安装selenium

原因2: 当前项目下有selenium.py,和系统包名冲突导致,

解决方法,重命名这个文件

驱动及本地服务类异常

未找到响应的浏览器驱动

WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

WebDriverException: Message: 'chromedriver' executable needs to be in PATH.

原因: 查找不到对应的浏览器驱动

解决方法: 下载浏览器对应版本的chromedriver或geckodrivergeckodriver

放到脚本当前文件夹下或将路径配置到环境变量中, 或放到Python目录的Scripts下(一般情况下Python的Scripts目录在环境变量中), 或使用浏览器选项options指定驱动路径

未找到浏览器

WebDriverException: Message Can not connect to the Service chromedriver
org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary

原因: 在默认路径下未找到Firefox浏览器

解决方法: 重新安装Firefox浏览器

驱动和浏览器不匹配

SessionNotCreatedException: Message: session not created:
this version of ChromeDriver only supports Chrome version 76

原因: 当前使用chromedriver只支持Chrome76版本

解决方法: 查看本地Chrome浏览器的版本, 下载对应的chromedriver

驱动被防火墙拦截

WebDriverException: Message: Can not connect to the Service IEDriverServer.exe

原因: iedriverserver.exe被防火墙拦截

解决方法: 防火墙设置允许

连接不上chromedriver服务

WebDriverException: Message: Can not connect ot the Service chromedriver

原因: 脚本通过127.0.0.1这个ip访问本地chromedriver服务, hosts中未配置 127.0.0.1指向localhost

解决办法: 配置本地hosts, 添加:127.0.0.1 localhost

6.RemoteDriverServerException: 远程服务器异常, 解决方法: 确认webdriver.Remote()中的远程Webdriver服务是否OK

7. ErrorInResponseException: Webdriver服务器响应异常, 解决方法, 根据具体报错信息分析

找不到类异常: 定位/获取属性/切换警告框,Frame, 窗口

  1. NoSuchElementException: 找不到元素, 解决方法: 前面加上sleep等待后重试,或换一种定位方式
  2. NoSuchAttributeException: 元素没有这个属性, 解决方法: 确认定位到的元素是否目标元素, 检查属性拼写
  3. NoAlertPresentException:没有找到alert弹出框, 解决方法: 观察页面,查看是否有弹框出现, 加上等待或作为偶现元素处理
  4. NoSuchFrameException:没有找到指定的frame或iframe, 解决方法: 查看拼写或切换使用frame的id/name/index/定位到的frame
  5. NoSuchWindowException: 没找到窗口句柄指定的窗口, 解决方法: 查看使用的窗口句柄变量拼写
  6. UnexpectedAlertPresentException: 出现了弹框而未处理, 解决方法: 切换到警告框并处理, 如果偶现,使用try...except处理偶现弹框
  7. InvalidSwitchToTargetException: 切换到指定frame或窗口报错, 解决方法: 查看相应的frame或窗口是否能定位到
  8. UnexpectedTagNameException: 使用Tag Name不合法, 解决方法: 检查拼写或使用css selector/xpath
  9. TimeoutException:查找元素或操作超时, 解决方法, 稍后重试

元素操作异常类: 隐藏/不可操作状态

  1. ElementNotVisibleException:元素不可见异常, selenium不能直接操作隐藏元素, 解决方法: 加上等待, 使用正常步骤使元素显示, 或使用js找到该元素的祖先节点的隐藏属性(通常为styple="display: none"), 移除该属性然后定位操作.
  2. StaleElementReferenceException: 陈旧元素引用异常, 页面刷新或跳转后使用了之前定位到的元素, 解决方法: 重新定位元素并操作
  3. InvalidElementStateException: 元素状态异常 元素只读/不可点击等, 解决方法, 等待或使用js移除元素readonly/disable等限制属性后操作
  4. ElementNotSelectableException:元素不可被选中, 解决方法: 确认原始是否为select标签, 是否禁用
  5. InvalidSelectorException: 使用的定位方法不支持或xpath语法错误, 未返回元素, 解决方法: 检查使用的元素定位器是否拆包, 使用find_element()方法是, 第一个参数为'class name', 'link text', 'particial link text' 'css selector', 空格分开, 非下划线连接, 建议使用By.CLASS_NAME的方式. 使用chrome开发着工具+Ctrl+F搜索验证自己写的xpath语法.
  6. MoveTargetOutOfBoundsException: 使用ActionChains的move方法时移动到的位置不合适

Cookie存取相关异常

  1. InvalidCookieDomainException: Cookie相应的域名无效
  2. UnableToSetCookieException: 设置Cookie异常

IME输入法引擎异常

  1. ImeNotAvailableException: 服务器不支持输入法
  2. ImeActivationFailedException: 输入法激活异常

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python抓取百度查询结果的方法
Jul 08 Python
python 异常处理总结
Oct 18 Python
Python查找第n个子串的技巧分享
Jun 27 Python
Python根据欧拉角求旋转矩阵的实例
Jan 28 Python
Django文件存储 自己定制存储系统解析
Aug 02 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
Golang GBK转UTF-8的例子
Aug 26 Python
pytorch实现建立自己的数据集(以mnist为例)
Jan 18 Python
sklearn+python:线性回归案例
Feb 24 Python
解决jupyter notebook 前面书写后面内容消失的问题
Apr 13 Python
Django Model中字段(field)的各种选项说明
May 19 Python
Python WebSocket长连接心跳与短连接的示例
Nov 24 Python
pandas分组聚合详解
Apr 10 #Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 #Python
Selenium使用Chrome模拟手机浏览器方法解析
Apr 10 #Python
Selenium基于PIL实现拼接滚动截图
Apr 10 #Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 #Python
Selenium向iframe富文本框输入内容过程图解
Apr 10 #Python
jupyter notebook 多环境conda kernel配置方式
Apr 10 #Python
You might like
mysql 全文搜索 技巧
2007/04/27 PHP
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
php中判断数组是一维,二维,还是多维的解决方法
2013/05/04 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
javascript数据类型详解
2017/02/07 Javascript
vue2.0项目实现路由跳转的方法详解
2018/06/21 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
python类继承用法实例分析
2015/05/27 Python
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
Flask配置Cors跨域的实现
2019/07/12 Python
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
机关门卫的岗位职责
2014/04/29 职场文书
端午节活动总结
2014/08/26 职场文书
项目合作意向书
2015/05/08 职场文书
同意离婚答辩状
2015/05/22 职场文书
爱国电影观后感
2015/06/19 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
社区服务理念口号
2015/12/25 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL