0
点赞
收藏
分享

微信扫一扫

Selenium3源码之异常模块篇



Selenium3源码之异常模块篇_软件测试

Selenium3 Python3源码分析系列以短文方式进行分享

阅读源码是掌握Selenium的最好方式

我的公众号:开源优测

Selenium3源码之异常模块篇

简介

本文分析Selenium3源码中关于异常处理的通用代码,要分析的代码位置如下(路径为:***python3/lib/site-packages/selenium/common/exceptions.py):

Selenium3源码之异常模块篇_定位_02

这里我源码做了折叠以便大家看下,只截取部分图如下:

Selenium3源码之异常模块篇_软件测试_03

在模块中共30余个异常类,本文不会一一说明,所有的类,请自行去看源码学习。

webdriver异常基类

类WebDriverException是webdriver所有异常类的基类,其继承自Python中的Exception基础类。下面将直接在源码中对代码进行注释说明:

## 定义WebDriverException类,继承Exception
class WebDriverException(Exception):
    """
    Base webdriver exception.
    webdriver异常基类
    """

    # __init__函数,初始化用
    def __init__(self, 
        msg=None, # 异常信息
        screen=None, # 异常快照
        stacktrace=None): # 堆栈跟踪信息
        
        self.msg = msg 
        self.screen = screen
        self.stacktrace = stacktrace    

    # 把类实例转换成字符串类型
    def __str__(self):
        # 格式化异常信息
        exception_msg = "Message: %s\n" % self.msg        
    
        # 判断是否存在异常快照信息,有则拼接到格式化字符串
        if self.screen is not None:
            exception_msg += "Screenshot: available via screen\n"

        # 判断是否存在堆栈跟踪信息,有则拼接到格式化字符串
        if self.stacktrace is not None:
            stacktrace = "\n".join(self.stacktrace)
            exception_msg += "Stacktrace:\n%s" % stacktrace        # 返回格式化后的异常信息    
        return exception_msg

webdriver服务端异常类

ErrorInResponseException类是webdriver服务端抛出异常时处理

# 继承自WebDriverException基类
# 当webdriver远程服务出现异常时,抛出该异常
class ErrorInResponseException(WebDriverException):
    """
    Thrown when an error has occurred on the server side.

    This may happen when communicating with the firefox extension
    or the remote driver server.
    """
    def __init__(self, response, msg):
        WebDriverException.__init__(self, msg)
        self.response = response

其他异常

其他异常基本如下图所示的样式:

Selenium3源码之异常模块篇_java_04

主要有这些异常:

异常

描述

InvalidSwitchToTargetException

切换的窗口或frame不存在时抛出该异常

NoSuchFrameException

切换的frame不存在时抛出该异常

NoSuchWindowException

切换的窗口不存在时抛出该异常

NoSuchElementException

未找到元素时抛出该异常

NoSuchAttributeException

未找到元素的指定属性时抛出该异常

StaleElementReferenceException

引用一个不存在的元素时抛出该异常

InvalidElementStateException

当元素状态无效时导致webdriver指令无法完成时,抛出该异常

UnexpectedAlertPresentException

当alert弹出导致webdriver指令阻塞时抛出该异常

NoAlertPresentException

当切换至一个不存在的alert弹窗时抛出该异常

ElementNotVisibleException

当操作不可见元素时抛出该异常

UnableToSetCookieException

设置cookie失败时抛出该异常

RemoteDriverServerException

远程webdriver服务异常时抛出该异常

TimeoutException

webdirver指令超时时抛出该异常

UnexpectedTagNameException

使用tag name定位失败时抛出该异常

InvalidSelectorException

当使用了无效的定位选择器时抛出该异常

JavascriptException

执行js异常时抛出该异常

NoSuchCookieException

获取不存在的cookie时抛出该异常

ScreenshotException

截屏异常

ElementClickInterceptedException

单击元素交互异常时抛出该异常

InsecureCertificateException

SSL证书异常时抛出该异常

InvalidSessionIdException

webdriver session(会话)异常时(例如会话无效),抛出该异常

SessionNotCreatedException

无法创建新的webdriver会话时抛出该异常

UnknownMethodException

未知方法异常

注:这些异常你应该都要熟悉的理解,以便在实际自动化测试过程中快速定位问题并解决问题

开源优测

分享软件测试开源技术、经验、方案的首发平台

Selenium3源码之异常模块篇_java_05

长按二维码/微信扫描 关注开源优测


举报

相关推荐

0 条评论