产品体验中心 下载与支持 产品社区 合作代理 |  咨询电话:400-035-7887/021-6072 5088
当前位置:泽众软件测试网- 技术文章 -正文

Selenium自动化测试框架中常见异常分析及解决方案

发布时间:2020-07-16

Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用自动化测试框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中执行这些软件测试

selenium

1、pycharm中导入selenium报错

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

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

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

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

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

2、驱动及本地服务类异常

1)未找到响应的浏览器驱动

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指定驱动路径

2)未找到浏览器

WebDriverException: Message Can not connect to the Service chromedriver

org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary

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

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

3)驱动和浏览器不匹配

SessionNotCreatedException: Message: session not created:

this version of ChromeDriver>

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

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

4)驱动被防火墙拦截

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

WebDriverException: Message: Can not connect to the S

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

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

5)连接不上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服务器响应异常。

解决方法:根据具体报错信息分析

3、找不到类异常

找不到类异常: 定位/获取属性/切换警告框,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:查找元素或操作超时, 解决方法, 稍后重试

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

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方法时移动到的位置不合适

5、Cookie存取相关异常

1)InvalidCookieDomainException: Cookie相应的域名无效

2)UnableToSetCookieException: 设置Cookie异常

6、IME输入法引擎异常

1)ImeNotAvailableException: 服务器不支持输入法

2)ImeActivationFailedException: 输入法激活异常

更多Selenium知识阅读:

Selenium自动化测试流程是什么?Selenium自动化测试流程图

在Selenium自动化测试框架中如何设置数据校验点?

selenium是怎么定位控件的?selenium获取页面元素用什么方法好?

Selenium自动化测试框架ATF之apk批量操作

自动化测试框架ATF新增跨项目任务功能模块

如何使用ATF自动化测试框架进行管理和测试?

自动化测试框架有哪几种?主流自动化测试框架有哪些?

本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-60725088-8054),我们将立即处理,马上删除。
沪ICP备07036474号 2003-2023 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd.
微信
咨询

添加客服微信 欢迎咨询测试工具和测试服务

微信客服
问题
反馈
产品
画册

扫描二维码下载泽众软件企业宣传册

产品画册
返回
顶部

方案咨询

×
提交信息

电话咨询,400-035-7887,安排专业技术售前给您解答(产品试用、技术交流、服务咨询和商务报价)。

您的信息已成功提交!

我们的客服人员稍后会与您联系