目录:导读
- 前言
- 一、Python编程入门到精通
- 二、接口自动化项目实战
- 三、Web自动化项目实战
- 四、App自动化项目实战
- 五、一线大厂简历
- 六、测试开发DevOps体系
- 七、常用自动化测试工具
- 八、JMeter性能测试
- 九、总结(尾部小惊喜)
前言
当测试工程师执行Selenium测试自动化用例时,可能会遇到很多陌生的Exception。在执行测试脚本时,有些Exception可能不是很常见,因为测试用例锁依赖的测试框架拥有足够健壮性以应对此类场景。
这些未被预期的场景被称为异常场景,在使用Selenium进行自动浏览器测试时,通常来讲会遇到很多异常场景。
Selenium异常广泛用于处理错误情况并避免Web应用程序故障。尽管在所有Selenium WebDriver代码中都可能发生许多Selenium异常,但是某些Selenium异常基于特定于框架支持的编程语言,例如Java、C#、Python等。
常见的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,可以避免次异常的发生。
21、JavascriptException
执行JavaScript代码时出现问题时,抛出此异常。
22、NoAlertPresentException
当切换到屏幕上尚不存在的alert时,会发生这种情况。处理alert的理想方法是检查警报是否存在,然后在Alert类上调用所需的操作命令。
23、MoveTargetOutOfBoundsException
如果提供给ActionChains的move()方法的目标超出范围(即无效或超出文档/网页),则抛出Selenium异常。
在调用ActionChains类的move()方法之前,应该始终检查我们尝试移动的位置,并仅在屏幕上存在该位置时才执行该操作。
24、NoSuchAttributeException
这是在执行自动浏览器测试时肯定会遇到的少数Selenium异常之一。字面意思,如果找不到元素的属性,则抛出NoSuchAttributeException。
要处理此异常,应该为执行测试的浏览器检查属性的存在。同一属性的不同属性名称可能因浏览器而异,元素加载和处理效率低下可能导致此异常。
25、NoSuchCookieException
当当前浏览上下文的活动document的关联cookie中不存在与给定路径名匹配的cookie时,会发生此Selenium异常。
26、NoSuchElementException
当用于访问元素的定位器无效或试图对不在DOM上的元素执行操作时,将引发NoSuchElementException。在这两种情况下,都不会找到该元素。
要处理此Selenium异常,应检查选择器是否正确,如果正确,则还需要额外等待以确保WebElement的外观。
27、StaleElementReferenceException
当对元素的引用不在页面的DOM上时,就会发生Selenium异常。简而言之,该元素已销毁或老旧。
此特定Selenium异常的某些可能原因是:
该元素可能在刷新的iFrame中。
该页面可能已刷新,并且要访问的元素不再是当前页面的一部分。
由于元素已定位,但是不能被删除和重新添加到屏幕。
处理此异常的解决方案是使用动态XPath在循环中查找所需的元素,并在找到元素后中断循环。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
一、Python编程入门到精通
二、接口自动化项目实战
三、Web自动化项目实战
四、App自动化项目实战
五、一线大厂简历
六、测试开发DevOps体系
七、常用自动化测试工具
八、JMeter性能测试
九、总结(尾部小惊喜)
只要你敢于追求,勇于拼搏,就一定能够实现自己的目标。坚持努力不懈,不断挑战自我,成为更加出色的自己。即使在困难时刻,也不要放弃信念,因为成功就在不远处!
只有不断的学习和进步,才能实现自己的梦想。永不放弃,勇往直前!相信自己,坚持到底。机会总会留给有准备的人,让我们一起努力,创造属于自己的成功!
只有在你努力的时候,才能突破自己的极限。无论前路多么坎坷,都要凭借自己的毅力和勇气去面对。相信自己,你一定能够取得成功,实现梦想!