首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium3源码之异常模块篇

Selenium3源码之异常模块篇

作者头像
苦叶子
发布2018-04-09 16:43:52
9520
发布2018-04-09 16:43:52
举报
文章被收录于专栏:开源优测开源优测

Selenium3源码之异常模块篇

简介

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

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

在模块中共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

其他异常

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

主要有这些异常:

异常

描述

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

未知方法异常

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源优测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • webdriver异常基类
    • webdriver服务端异常类
      • 其他异常
      相关产品与服务
      SSL 证书
      腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档