selenium源码阅读1:目录结构和异常模块

1、准备工作

  • 安装python3
  • 安装selenium3

2、python端selenium API源码结构

 

  • common:定义了通用的异常类
    • exceptions:定义了所有可能在webdriver代码中可能出现的异常
  • webdriver:核心实现
    • android:android浏览器支持
    • blackberry:blackberry平台支持
    • chrome:谷歌浏览器支持
    • edge:微软最新的edge浏览器支持,一般要windows10及以上平台比较好
    • firefox:火狐浏览器支持
    • ie:微软ie浏览器支持,注意ie和edge是两个不同的浏览器
    • opera:opera浏览器支持,可能很多人没见过这个,很出名的
    • phantomjs:内存模式可以渲染解析js、css、html,可以快速运行
    • safari:apple下的浏览器支持
    • webkitgtk:一般不怎么用

上述各目录定义了各浏览器兼容的代码,即用于支持不同的浏览器

  • common:定义了webdriver所指定的通用能力
  • remote:定义了webdriver的核心能力
  • support:定义了webdriver的辅助能力
  • __init__.py  对外导出了webdriver的能力

3、common/exceptions 异常模块

common/__int__.py -- 对外提供导入功能

# 提供对外导入的功能

from . import exceptions  # noqa

commom/exceptions.py -- 所有webdriver代码中可能发生的异常

常见异常类型:

  • NoSuchElementException:没有找到元素

  • NoSuchFrameException:没有找到iframe

  • NoSuchWindowException: 没找到窗口句柄handle

  • NoSuchAttributeException: 属性错误

  • NoAlertPresentException:没找到alert弹出框

  • lementNotVisibleException:元素不可见

  • ElementNotSelectableException:元素没有被选中

  • TimeoutException:查找元素超时

  • …………

异常的基类,其他异常类均继承该类。 

"""
Exceptions that may happen in all the webdriver code.

"""


class WebDriverException(Exception):
    """
    Base webdriver exception.
    webdriver 所有异常的基类
    """

    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:  # 屏幕截图scree不为None,说明有screen相关的异常信息
            exception_msg += "Screenshot: available via screen\n"  # 异常信息加上屏幕截图异常信息提示
        if self.stacktrace is not None:  # 堆栈stacktrace不为None,说明stacktrace有相关的异常信息
            stacktrace = "\n".join(self.stacktrace)  # 把WebDriverException类的异常信息赋值给变量stacktrace
            exception_msg += "Stacktrace:\n%s" % stacktrace  # 拼接异常信息
        return exception_msg  # 返回异常信息

其他异常类。 

class InvalidSwitchToTargetException(WebDriverException):
    """
    Thrown when frame or window target to be switched doesn't exist.
    """
    pass

至于为什么其他异常类的具体实现为什么都是pass,那可能就需要好好品味一下继承这个东西了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值