在跑selenium脚本时,要认识下Selenium常见异常类

如果你在跑selenium脚本时,需要某些异常不知道怎么解决时,可以看看这一系列的文章,看看有没有你需要的答案

什么是异常?

  顾名思义,作为程序员的一种常用术语,“异常”与任何特定的编程语言无关。它属于程序因为突然中止,而未能交付出预期输出的事件。通常,引发异常出现的潜在因素往往来自如下方面:

  · Java虚拟内存(JVM)的不足

  · 请求访问的文件在目标系统中不存在

  · 用户提供了无效的数据

  · 在正常的通信过程中突然出现断

Java中的异常类型

  1. 已查明的异常(Checked Exceptions):编译器在编译的过程中,会检查到这些异常,并验证它们是否已被处理。如果未被处理,系统会 告编译错误。因此它们被通称为编译时异常(compile-time exceptions)。下面是一些常见的此类异常示例:

  · SQLException:程序在基于SQL语法执行数据库查询时,可能会产生此类异常。

  · IOException:程序在文件上执行无效的I/O流操作时,可能会产生此类异常。

  · ClassNotFoundException:当JVM无法找到所需的Java类时,可能会产生此类异常。

  2. 未查明的异常(Unchecked Exceptions):这些异常是在程序的执行期间发生的逻辑错误,因此通常称为运行时异常(Runtime Exceptions)。此类异常在编译时未被检查出来,或者在整个编译过程中已被忽略。下面是一些典型的此类异常示例:

  · NullPointerException:当访问具有空值的对象时,可能会产生此类异常。

  · ArrayIndexOutofBound:当使用无效的索引值去访问数组时,可能会产生此类异常。

  · IllegalArgumentException:当程序将不正确的参数传递给方法时,可能会产生此类异常。

  · NumberFormatException:当程序将字符串传递给无法转换为数字的方法时,可能会产生此类异常。

  · ArithmeticException:当程序执行不正确的算术运算(例如将数字除以零)时,可能会产生此类异常。

  异常处理标准

  通过对异常处理能力的提升,我们不仅可以保持代码的整洁,而且能够增强其可维护性、可扩展性和可阅读性。当然,不同的面向对象编程(Object-Oriented Programming,OOP)语言,具有不同的异常处理方法。以下是一些常用的Java异常处理标准:

  Try-Catch:该关键字组合可被用于捕获异常。其中,try块应当被放在开头,而catch块应被放在try块的末尾,以便捕获异常,并采取必要的行动。也就是说,我们可以在遇到异常时,创建异常类的对象,以便使用以下预定义的方法,来显示调试信息:

  · printStackTrace():该函数可用于打印栈的跟踪、异常的名称、以及其他重要的异常信息。

  · getMessage():此函数有助于获取针对异常的深入描述。

  try

  {

  // Code

  } catch(Exception e){

  // Code for Handling exception

  }

  同时,Try-Catch块也可以用其他高级方法来处理异常,例如,我们可能希望从单个代码块中捕获多个异常,那么就可以通过在try块之后的多个catch块,去处理不同的异常。而且,我们在try块之后,使用无限数量的catch块。

  try

  {

  //Code

  } catch(ExceptionType1 e1){

  //Code for Handling Exception 1

  } catch(ExceptionType2 e2){

  //Code for Handling Exception 2

  }

  Throw/Throws:如果程序员想显式地抛出异常,那么可以使用throw关键字,与要在运行时处理的异常对象协同使用。

  public static void exceptionProgram()throws Exception{

  try {

  // write your code here

  } Catch(Exception b){

  // Throw an Exception explicitly

  throw(b); }

  }

  如果开发者想抛出多个异常,则可以通过在方法签名的子句中使用throws关键字来抛出,并且由方法的调用者去进行异常处理。

  public static void exceptionProgram()throws ExceptionType1, ExceptionType2{

  try {

  // write your code here

  } catch(ExceptionType1 e1){

  // Code to handle exception 1

  } catch(ExceptionType1 e2){

  // Code to handle exception 2

  }

  finally:该个代码块往往是在try-catch块之后被创建的。也就是说,无论是否抛出异常,它都会被执行。

  try {

  //Code

  } catch(ExceptionType1 e1){

  //Catch block

  } catch(ExceptionType2 e2){

  //Catch block

  } finally {

  //The finally block always executes.

  }

最常见异常类

异常:

selenium.common.exceptions.WebDriverException(msg=None, screen=None, stacktrace=None)

基类:

exceptions.Exception

描述:WebDriver基础的异常类

异常:

selenium.common.exceptions.TimeoutException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:一条命令在足够的时间内没有完成则会抛出异常

异常:

selenium.common.exceptions.StaleElementReferenceException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:一个参考的元素现在是“过时”时抛出异常,“过时”是指这个元素不再出现在页面的Dom中。

异常:

selenium.common.exceptions.NoSuchElementException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:元素不能被找到时异常抛出

异常:

selenium.common.exceptions.NoSuchAttributeException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:当元素的属性不能被发现时异常抛出

异常:

selenium.common.exceptions.NoAlertPresentException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:切换到没有弹出的alert弹窗时抛出异常

异常:

selenium.common.exceptions.NoSuchFrameException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.InvalidSwitchToTargetException

描述:切换进不存在的iframe窗口时抛出异常

异常:

selenium.common.exceptions.InvalidElementStateException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:无效的元素状态

异常:

selenium.common.exceptions.ElementNotSelectableException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.InvalidElementStateException

描述:当尝试选择一个不能被选中的元素时,异常会抛出

异常:

selenium.common.exceptions.ElementNotVisibleException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.InvalidElementStateException

描述:元素在DOM树中,但它是不可见的(display:none),操作该元素,异常将抛出

不常见的异常类

异常:

selenium.common.exceptions.ErrorInResponseException(response, msg)

基类:

selenium.common.exceptions.WebDriverException

描述:服务器端有错误时,异常将抛出(这个原因可能是因为Firefox插件或者远程server)

异常:

selenium.common.exceptions.ImeActivationFailedException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:激活输入法失败时异常会抛出。

异常:

selenium.common.exceptions.ImeNotAvailableException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:当输入法不支持的时候异常将抛出。

异常:

selenium.common.exceptions.InvalidCookieDomainException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:试图在不同的domain而不是目前的URL中添加一个cookie时抛出异常

异常:

selenium.common.exceptions.InvalidSelectorException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.NoSuchElementException

描述:当选择器没有返回一个web元素时,异常抛出。

异常:

selenium.common.exceptions.InvalidSwitchToTargetException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:当切换的窗口或者框架不存在的时候,异常将抛出。

异常:

selenium.common.exceptions.MoveTargetOutOfBoundsException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:提供给ActionChainsmovable()方法的目标无效时,异常将抛出,例如:超出文件外

异常:

selenium.common.exceptions.NoSuchWindowException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.InvalidSwitchToTargetException

描述:需要切换的目标窗口不存在时,异常抛出

异常:

selenium.common.exceptions.UnableToSetCookieException(msg=None, screen=None, stacktrace=None)

基类:

selenium.common.exceptions.WebDriverException

描述:当一个驱动程序无法设置cookie时抛出异常。

异常:

selenium.common.exceptions.UnexpectedAlertPresentException(msg=None, screen=None, stacktrace=None)

基类: 

selenium.common.exceptions.WebDriverException

描述:当一个意外的警告出现时将抛出异常。

异常:

selenium.common.exceptions.UnexpectedTagNameException(msg=None, screen=None, stacktrace=None)

基类: 

selenium.common.exceptions.WebDriverException

描述:辅助类没有获取到期待的web元素时,会抛出异常

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年5月9日
下一篇 2022年5月9日

相关推荐