当前位置: 首页 > news >正文

Selenium自动化测试20条常见异常+处理方案

常见的Selenium异常

以下是所有Selenium WebDriver代码中可能发生的一些常见Selenium异常。

1、ElementClickInterceptedException

由于以某种方式隐藏了接收到click命令的元素,因此无法正确执行Element Click命令。

2、ElementNotInteractableException

即使目标Web元素存在于DOM上,但与该元素的交互将击中另一个Web元素时,也会抛出此ElementNotInteractableException的Selenium异常。

3、ElementNotSelectableException

当目标元素存在于DOM上但由于无法选择而无法与之交互时,就会发生此Selenium异常。

4、ElementNotVisibleException

Selenium异常的最常见类型,即使存在web元素但不可见,将引发该异常。由于该元素不可见,因此无法与该元素进行任何交互。

在Selenium测试自动化中通常会遇到这种情况,其中尝试对Web元素(例如按钮、标签、超链接等)进行相关操作,但该元素从视图中隐藏了。另一个示例是HTML中定义的具有隐藏类型的元素。

5、ErrorInResponseException

当服务器端发生某些问题或错误时,将抛出这个Selenium异常。如果错误的用户名和访问密钥的组合用于访问基于云的远程Selenium Grid,在与远程Web驱动程序服务器进行通信或与Firefox扩展(或Chrome拓展)进行通信,则可能会发生这种情况。

服务器端错误的一些常见响应代码是:

401:未经授权

400:错误的请求

500:内部服务器错误

409:冲突

403:禁止

405:方法被禁止

6、ImeActivationFailedException

如果IME(输入法)的激活由于某种原因失败,则抛出此异常。解决此问题的理想方法是检查计算机上是否有IME支持。

7、ImeNotAvailableException

如果IME(输入法)不可用,则抛出此Selenium异常。如果在测试计算机上没有IME支持,则会为每个与IME相关的方法抛出ImeNotAvailableException。

8、InsecureCertificateException

过期或无效的TLS证书的使用导致用户代理引发证书警告。

9、NoSuchFrameException

当要切换到的iframe不存在时,将引发NoSuchFrameException这个Selenium异常。

为避免此类Selenium异常,建议在基于浏览器的自动化测试代码中添加有关切换到iframe的方式时进行健全性检查。检查使用的iframe索引是否正确。可以添加几百毫秒(ms)的额外等待时间,以确保完成iframe加载。

10、NoSuchWindowException

当切换到的窗口目标不存在时,抛出此异常。通过使用window_handles可以解决这些情况,以便获得当前的活动窗口集。窗口句柄可用于对窗口句柄执行适当的操作。

11、RemoteDriverServerException

当浏览器功能的错误组合/字段导致服务器不发送响应时,将引发此异常。为避免此类Selenium异常,从(平台+浏览器)、(平台+浏览器+浏览器版本)等的有效组合的角度彻底检查Selenium浏览器功能非常重要。

12、ScreenshotException

顾名思义,当无法进行屏幕捕获时,会抛出此Selenium异常。这种情况很可能出现在网页/Web应用程序中,其中用户输入了用户名、密码、银行信息等敏感信息。在这种情况下,由于屏幕截图上的限制而无法捕获屏幕截图。此处,屏幕截图限制会阻止捕获或记录屏幕信息。

13、SessionNotCreatedException

当新会话的创建不成功时,将发生此异常。

14、InvalidArgumentException

当传递的参数无效或格式错误时,将引发InvalidArgumentException异常。

更好的做法是使用Selenium测试自动化代码中的适当等待时间(以毫秒为单位)来验证被测网页是否加载全完。

15、InvalidCookieDomainException

当尝试添加cookie的URL/host与当前URL不同时,将抛出此Selenium异常。

要处理此异常,测试人员编写代码时应该导航到必须在其中添加Cookie的正确URL地址。

16、InvalidCoordinatesException

将错误的坐标提供给交互操作时,将引发此特定异常。

这也意味着依赖于鼠标位置(例如单击)的动作之前没有进行移动操作,或者为移动操作提供了无效的坐标。

17、InvalidElementStateException

当命令无法完成时会抛出此Selenium异常,因为该元素处于无效状态或未启用该元素来执行该操作。如果在不可编辑且不可重置的Web元素上尝试执行诸如清除元素之类的操作,可能会导致这种异常的出现。

要在Selenium测试自动化中处理此类异常,建议在对该元素执行所需的操作之前等待该元素被启用或者在操作之前进行检查。

18、InvalidSelectorException

如果在不同版本之间更改了选择器名称,则可能会意外使用无效或不正确的选择器来定位Web元素。如果用于查找Web元素的选择器未返回WebElement,则抛出InvalidSelectorException。

当XPath表达式是选择器并且XPath无效时,通常会发生这种情况。这将导致无法找到所需的Web元素。

19、InvalidSessionIdException

如果在Selenium测试自动化实现中使用的会话ID无效,即不在当前活动的会话列表中,则抛出此异常。如果会话处于非活动状态或从未存在过,则可能发生这种情况。

20、InvalidSwitchToTargetException

如果要切换到的iframe或window你目标无效,则会出现此Selenium异常。在切换到该iframe之前,请使用检查工具验证目标框架的XPath,可以避免次异常的发生。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

 

相关文章:

Selenium自动化测试20条常见异常+处理方案

常见的Selenium异常 以下是所有Selenium WebDriver代码中可能发生的一些常见Selenium异常。 1、ElementClickInterceptedException 由于以某种方式隐藏了接收到click命令的元素,因此无法正确执行Element Click命令。 2、ElementNotInteractableException 即使目…...

verilog将信号和常数拼接起来

正确的拼接 1 s_axis_data_tdata {32b0000_0000_0000_0000_0000_0000_0000_0000,32b0011_1111_1000_0000_0000_0000_0000_0000}; 2 注意,信号的两部分都要用{}花括号括起来 s_axis_data_tdata {{32{1b1}},{32b0100_0000_0000_0000_0000_0000_0000_0000}}; 3…...

OpenSSH远程代码执行漏洞 (CVE-2024-6387)

1. 前言 OpenSSH是一套基于安全外壳(SSH)协议的安全网络实用程序,它提供强大的加密功能以确保隐私和安全的文件传输,使其成为远程服务器管理和安全数据通信的必备工具。 OpenSSH 自 1995 年问世近 20 年来,首次出现了…...

高薪程序员必修课-java并发编程的bug源头

前言 Java并发编程虽然强大,但也容易引发复杂的bug。并发编程的bug主要源自以下几个方面:竞态条件、死锁、内存可见性问题和线程饥饿。了解这些bug的源头及其原理,可以帮助开发者避免和解决这些问题。以下是详细的讲解和相应的示例。 1. 竞态…...

c++:#include 某文件.h底层如何寻找其.cpp实现

在C中,当你编写了一个头文件(如MyLibrary.h)和对应的实现文件(如MyLibrary.cpp)时,其他源文件(如main.cpp)只需要包含头文件(#include "MyLibrary.h"&#xff…...

uniapp中如何进行微信小程序的分包

思路:在uniapp中对微信小程序进行分包,和原生微信小程序进行分包的操作基本上没区别,主要就是在pages.json中进行配置。 如图,我新增了一个包diver-page 此时需要在pages.json中的subPackages数组中新增一项 root代表这个包的根…...

win10下安装PLSQL14连接Oracle数据库

问题背景 在使用Oracle开发过程中,经常会使用工具来连接数据库,方便查询、处理数据。其中有很多工具可以使用,比如dbeaver、plsql等。本文主要介绍在win10环境下,plsql14的安装步骤以及安装过程中遇到的一些问题。 安装步骤及问题…...

高考失利咨询复读,银河补习班客服开挂回复

补习班的客服在高考成绩出来后,需要用专业的知识和足够的耐心来回复各种咨询,聊天宝快捷回复软件,帮助客服开挂回复。 ​ 前言 高考成绩出来,几家欢喜几家愁,对于高考失利的学生和家长,找一个靠谱的复读补…...

java 代码块

Java中的代码块主要有三种类型:普通代码块、静态代码块、构造代码块。它们的用途和执行时机各不相同。 普通代码块:在方法内部定义,使用一对大括号{}包围的代码片段。它的作用域限定在大括号内,每当程序执行到该代码块时就会执行其…...

vue中避免多次请求字典接口

vuex缓存所有字典项 背景vuex管理所有字典项调用字典接口处理字典项数据的filter页面中使用字典 背景 每次用到字典都需要通过对应的字典type调用一次字典接口,当一个页面用到字典项很多时,接口请求炒鸡多,会导致接口响应超时。 本篇文章改为…...

Snappy使用

Snappy使用 Snappy是谷歌开源的压缩和解压的开发包,目标在于实现高速的压缩而不是最大的压缩 项目地址:GitHub - google/snappy:快速压缩器/解压缩器 Cmake版本升级 该项目需要比较新的cmake,CMake 3.16.3 or higher is requi…...

跨越重洋:在Heroku上配置Pip镜像源的终极指南

🌐 跨越重洋:在Heroku上配置Pip镜像源的终极指南 Heroku是一个支持多种编程语言的云平台即服务(PaaS),它允许开发者部署和管理应用程序。然而,由于Heroku的服务器位于海外,直接使用Python的包管…...

SpringBoot + 虚拟线程,性能炸裂!

一、什么是虚拟线程 虚拟线程是Java19开始增加的一个特性,和Golang的携程类似,一个其它语言早就提供的、且如此实用且好用的功能,作为一个Java开发者,早就已经望眼欲穿了。 二、虚拟线程和普通线程的区别 “虚拟”线程&#xf…...

Java Character类

Character是char的包装类 转义序列 Character类的方法...

Python中的爬虫实战:猫眼电影爬虫

随着互联网技术的快速发展,网络上的信息量越来越庞大。猫眼电影作为国内领先的电影数据平台,为用户提供了全面的电影信息服务。本文将介绍如何利用python编写简单的猫眼电影爬虫,获取电影相关数据。 爬虫概述 爬虫,即网络爬虫&a…...

WAIC2024 | 华院计算邀您共赴2024年世界人工智能大会,见证未来科技革新

在智能时代的浪潮汹涌澎湃之际,算法已成为推动社会进步的核心力量。作为中国认知智能技术的领军企业,华院计算在人工智能的广阔天地中,不断探索、创新,致力于将算法的潜力发挥到极致。在过去的时日里,华院计算不断探索…...

数据库原理之数据库基本概念

目录 前言 基本概念 数据库完整性 前言 今天我们来看看数据库的基本概念,帮助大家对数据库有一点点最基本的了解 基本概念 4个基本概念 数据data:描述事物的符号,数据库中存储的基本对象。 数据库Database:长期存储在计算机…...

vue2项目的打包以及部署

打包 当我们写好vue2的项目后,可以通过npm build来对项目进行打包 npm build 打包完成后我们可以看到在当面目录下生成了dis目录,src下的文件都会被打包进这个目录里,当然打包后的文件我们不能直接在浏览器打开,需要进行部署 部署 1.新建一个…...

Java的全局异常处理代码

第一步:先写一个异常管理类: package com.example.firefighting.exceptions;import com.example.firefighting.utils.Result; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerA…...

Hi3861 OpenHarmony嵌入式应用入门--LiteOS semaphore作为锁

CMSIS 2.0 接口中的 Semaphore(信号量)是用于嵌入式系统中多线程或中断服务例程(ISR)之间同步和共享资源保护的重要机制。Semaphore 是一种用于控制对多个共享资源访问的同步机制。它可以被看作是一个计数器,用于跟踪可…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...