Selenium异常处理(常见异常列表)

什么是异常?

异常是在程序执行时发生的错误。但是,在运行程序时,编程语言会生成一个异常,应该对其进行处理以避免程序崩溃。

该异常表明,虽然事件可能会发生,但这种类型的事件很少发生。最终,当异常从主函数抛出时,程序会突然终止。

在本教程中,将学习:

  • 什么是异常?
  • Selenium Web驱动程序中的异常
  • 处理Selenium异常
  • 显示异常的方法

Selenium Web驱动程序中的常见异常

异常名称 描述
ElementNotVisibleException 当DOM中的现有元素将某个功能设置为隐藏时,就会发生这种类型的Selenium异常。
ElementNotSelectableException 当元素出现在DOM中时,会发生这个Selenium异常,但是可以选择。因此,互动是不可能的。
NoSuchElementException 如果找不到元素,则会发生此异常。
NoSuchFrameException 如果要切换到的帧目标不存在,则会发生此异常。
NoAlertPresentException 当切换到未显示的告警时,会发生此异常。
NoSuchWindowException 如果要切换的窗口目标不存在,则会发生此异常。
StaleElementReferenceException 当Web元素从当前DOM分离时,会发生此Selenium异常。
SessionNotFoundException 在退出浏览器后,WebDriver会起作用。
TimeoutException 当没有足够的时间完成命令时抛出。例如,在指定时间内未找到搜索的元素。
WebDriverException 如果WebDriver在关闭浏览器后立即执行操作,则会发生此异常。
ConnectionClosedException 当驱动程序中存在断开连接时,会发生这种类型的异常。
ElementClickInterceptedException 命令可能不会完成,因为接收事件的元素隐藏了求点击的元素。
ElementNotInteractableException 当DOM中出现任何元素时,都会抛出此Selenium异常。但是,不可能与这样的元素交互。
ErrorInResponseException 这在与Firefox扩展或远程驱动服务器交互时发生。
ErrorHandler.UnknownServerException 异常用作占位符,以防服务器返回没有堆栈跟踪的错误。
ImeActivationFailedException 当IME引擎激活失败时,就会出现这种情况。
ImeNotAvailableException 它在IME支持不可用时发生。
InsecureCertificateException 导航使用户代理命中证书警告。这可能是由无效或过期的TLS证书引起的。
InvalidArgumentException 当参数不属于预期类型时,就会发生这种情况。
InvalidCookieDomainException 当尝试在不同域而不是当前URL下添加Cookie时,会发生这种情况。
InvalidConsulatesException 此类型的异常与无效的交互操作匹配。
InvalidElementStateExceptio 当元素无效时命令无法完成时,就会发生这种情况。
InvalidSessionIdException 当活动会话列表中未包括给定的会话ID时,会发生此异常。这意味着会话不存在或处于非活动状态。
InvalidSwitchToTargetException 当要切换的帧或窗口目标不存在时,会发生这种情况。
JavascriptException 执行用户提供的JavaScript时发生此问题。
JsonException 当在没有创建会话的情况下获得会话时,就会发生这种情况。
NoSuchAttributeException 当找不到元素的属性时,就会出现这种异常。
MoveTargetOutOfRangeException 如果提供给ActionChains move() 方法的目标无效,就会发生这种情况。例如,在文档之外。
NoSuchContextException ContextAware做移动设备测试。
NoSuchCookieException 如果没有为当前浏览文档的所有关联Cookie找到与给定路径名匹配的Cookie,则会发生此异常。
NotFoundException 此异常是WebDriverException的子类。当DOM上的元素不存在时,就会出现这种情况。
RemoteDriverServerException 当服务器由于描述的功能不正确而没有响应时,会抛出此Selenium异常。
ScreenshotException 无法捕获屏幕。
SessionNotCreatedException 无法成功创建新会话时会发生这种情况。
UnableToSetCookieException 如果驱动程序无法设置Cookie,则会发生这种情况。
UnexpectedTagNameException 如果支持类未按预期获取web元素,则发生。
UnhandledAlertException 当有告警,但WebDriver无法执行告警操作时,就会出现这种情况。
UnexpectedAlertPresentException 当出现意外告警时,就会发生这种情况。
UnknownMethodException 当求的命令与已知URL匹配,但与特定URL的方法不匹配时,会发生此异常。
UnreachableBrowserException 只有当浏览器由于某种原因无法打开或崩溃时,才会发生此异常。
UnsupportedCommandException 当远程WebDriver未按预期发送有效命令时会发生这种情况。

处理Selenium异常

下面是一些重要标准,可以使用它们来处理Selenium WebDriver中的异常:

try-catch:此方法可以捕获异常,它结合使用try和catch关键字。Try命令指示挡路的开始,Catch放在Try挡路的末尾,这有助于解决异常。

try {
// Code
} catch (Exception e) {
// Code for Handling exception
}
  • 多个Catch块:有各种类型的异常,可以期待来自单个挡路代码的多个异常。它可以用于两个以上的CATCH块,并且对CATCH块的数量没有限制。
try {
//Code
} catch (ExceptionType1 e1) {
//Code for Handling Exception 1
} catch (ExceptionType2 e2) {
//Code for Handling Exception 2
}
  • Throw:当想要生成异常时,使用Throw关键字抛出Exception,以便在运行时进行处理。当抛出一个没有处理的异常时,他们需要使用抛出关键字。
public static void anyFunction() throws Exception{
    try {
// write your code here
    } Catch (Exception b) {
// Do whatever you want to perform
// Throw the Exception back to the system
        throw(b);
    }
}
  • 多个异常:可以在throws子句中提到各种异常。
public static void anyFunction() throws ExceptionType1, ExceptionType2{
    try {
// write your code here
    } catch (ExceptionType1 e1) {
// Code to handle exception 1
    } catch (ExceptionType1 e2) {
// Code to handle exception 2
    }
  • 最后:最后一个关键字用于在试用挡路下创建挡路代码。无论是否发生异常,它都是帮助执行的最终代码
try {
//Code
} catch (ExceptionType1 e1) {
//Catch block
} catch (ExceptionType2 e2) {
//Catch block
} catch (ExceptionType3 e3) {
//Catch block
} finally {
//The finally block always executes.
}

显示异常的方法

还可以使用以下方法显示异常信息:

  • printStackTrace() :此函数打印堆栈跟踪、异常名称和其他有用的描述。
  • toString() :此函数返回描述异常名称和描述的文本消息。
  • getMessage() :帮助显示异常的描述。

总结:

  • 异常是在程序执行时发生的错误。
  • try-catch:此方法可以捕获异常,它结合使用try和catch关键字。
  • 多个捕获可帮助使用单独的挡路代码分别处理每种类型的异常。
  • 抛出关键字用于抛出异常,以便在运行时进行处理。
  • printStackTrace() :此函数打印堆栈跟踪、异常名称和其他有用的描述
  • toString() :此函数返回描述异常名称和描述的文本消息。
  • getMessage() :帮助显示异常的描述。

IT赶路人

专注IT知识分享