您的位置 首页 java

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

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

什么是异常?

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

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

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

  · 用户提供了无效的数据

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

Java中的异常类型

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

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

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

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

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

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

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

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

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

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

  异常处理标准

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

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

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

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

  同时,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. No alert PresentException (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. Invalid cookie DomainException (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元素时,会抛出异常

希望本文对你有所帮助~~如果对软件测试、接口测试、自动化测试、面试经验交流感兴趣可以私聊我或关注公众号“特斯汀软件测试”。免费领取最新软件测试大厂面试资料和 Python 自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。

文章来源:智云一二三科技

文章标题:在跑selenium脚本时,要认识下Selenium常见异常类

文章地址:https://www.zhihuclub.com/191359.shtml

关于作者: 智云科技

热门文章

网站地图