Selenium Webdriver 中的异常处理(类型)
什么是异常?
异常是在程序执行时发生的错误。但是,在运行程序时,编程语言会生成一个异常,应该对其进行处理以避免程序崩溃。
异常表示,尽管事件可能发生,但此类事件发生频率较低。当方法无法处理异常时,它会将其抛给其调用函数。
Selenium Webdriver 中的异常类型
1. ElementNotVisibleException: 这种 Selenium 异常发生在 DOM 中现有元素的特性设置为隐藏时。
2. ElementNotSelectableException: 这种 Selenium 异常发生在元素存在于 DOM 中,但你无法选择它。因此,无法进行交互。
3. NoSuchElementException: 如果找不到元素,则会发生此异常。
4. NoSuchFrameException: 如果要切换到的目标帧不存在,则会发生此异常。
5. NoAlertPresentException: 当你切换到不存在的警告框时,会发生此异常。
6. NoSuchWindowException: 如果要切换到的目标窗口不存在,则会发生此异常。
7. StaleElementReferenceException: 这种 Selenium 异常发生在 Web 元素从当前 DOM 分离时。
8. SessionNotFoundException: WebDriver 在你退出浏览器后仍在运行。
9. TimeoutException: 当命令没有足够的时间完成时抛出。例如,在指定时间内未找到搜索的元素。
10. WebDriverException: 这种异常发生在你关闭浏览器后 WebDriver 仍在运行的情况下。
11. ConnectionClosedException: 这种异常发生在驱动程序断开连接时。
12. ElementClickInterceptedException: 由于接收事件的元素遮挡了请求点击的元素,因此命令可能无法完成。
13. ElementNotInteractableException: 这种 Selenium 异常在 DOM 中存在任何元素时抛出。但是,无法与此类元素交互。
14. ErrorInResponseException: 这发生在与 Firefox 扩展或远程驱动程序服务器交互时。
15. ErrorHandler.UnknownServerException: 异常用作服务器返回没有堆栈跟踪的错误时的占位符。
16. ImeActivationFailedException: 当 IME 引擎激活失败时,会发生此预期。
17. ImeNotAvailableException: 当 IME 支持不可用时发生。
18. InsecureCertificateException: 导航导致用户代理遇到证书警告。这可能是由无效或过期的 TLS 证书引起的。
19. InvalidArgumentException: 当参数不属于预期类型时发生。
20. InvalidCookieDomainException: 当你尝试在不同域而不是当前 URL 下添加 cookie 时发生。
21. InvalidCoordinatesException: 这种异常与无效的交互操作相匹配。
22. InvalidElementStateException: 当元素无效时无法完成命令时发生。
23. InvalidSessionIdException: 当给定会话 ID 未包含在活动会话列表中时发生此异常。这意味着会话不存在或处于非活动状态。
24. InvalidSwitchToTargetException: 当要切换到的目标帧或窗口不存在时发生。
25. JavascriptException: 在执行用户给定的 JavaScript 时发生此问题。
26. JsonException: 当会话未创建时,你尝试获取会话时发生。
27. NoSuchAttributeException: 当找不到元素的属性时,会发生此类异常。
28. MoveTargetOutOfBoundsException: 如果提供给 ActionChains move() 方法的目标无效,则会发生。例如,超出文档范围。
29. NoSuchContextException: ContextAware 执行移动设备测试。
30. NoSuchCookieException: 当对于当前浏览文档的所有关联 cookie 均未找到与给定路径名匹配的 cookie 时,会发生此异常。
31. NotFoundException: 此异常是 WebDriverException 的子类。当 DOM 上的元素不存在时,会发生此异常。
32. RemoteDriverServerException: 当服务器因描述的能力不正确而无响应时,会抛出此 Selenium 异常。
33. ScreenshotException: 无法捕获屏幕。
34. SessionNotCreatedException: 当新会话无法成功创建时发生。
35. UnableToSetCookieException: 如果驱动程序无法设置 cookie,则会发生此异常。
36. UnexpectedTagNameException: 如果支持类未按预期获取 Web 元素时发生。
37. UnhandledAlertException: 当存在警报但 WebDriver 无法执行警报操作时,会发生此预期。
38. UnexpectedAlertPresentException: 当意外出现警报时发生。
39. UnknownMethodException: 当请求的命令与已知 URL 匹配但与特定 URL 的方法不匹配时,会发生此异常。
40. UnreachableBrowserException: 仅当浏览器因某种原因无法打开或崩溃时,才会发生此异常。
41. UnsupportedCommandException: 当远程 WebDriver 未按预期发送有效命令时发生。
如何处理 Selenium 中的异常
以下是一些重要的标准,你可以使用它们来处理 Selenium WebDriver 中的异常
步骤 1) Try-catch
此方法可以捕获异常,它使用 try 和 catch 关键字的组合。Try 命令表示块的开始,而 Catch 放在 try 块的末尾,有助于解决异常。
try { // Code } catch (Exception e) { // Code for Handling exception }
步骤 2) 多个 catch 块
有各种类型的异常,你可能会从单个代码块中遇到多个异常。多个 catch 块帮助你使用单独的代码块分别处理每种类型的异常。它可用于两个以上的 catch 块,并且 catch 块的数量没有限制。
try { //Code } catch (ExceptionType1 e1) { //Code for Handling Exception 1 } catch (ExceptionType2 e2) { //Code for Handling Exception 2 }
步骤 3) Throw
当你想要生成异常时,使用 Throw 关键字抛出异常以在运行时处理它。当你抛出异常而不处理它时,需要使用 Throw 关键字。
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); } }
步骤 4) 多个异常
你可以在 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 }
步骤 5) Finally
Final 关键字用于在 try 块下创建代码块。它是最终代码,无论是否发生异常,它都会执行
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 关键字的组合。
- 多个 catch 块帮助你使用单独的代码块分别处理每种类型的异常。
- Throw 关键字用于抛出异常以在运行时处理它。
- printStackTrace():此函数打印堆栈跟踪、异常名称和其他有用的描述
- toString():此函数返回描述异常名称和描述的文本消息。
- getMessage():有助于显示异常的描述。