Selenium学习 - 库代码解析

一、selenium/common

    exceptions.py

        定义了一个继承自Exception类的WebDriverException基础异常类,然后通过它扩展出整个selenium框架的全部异常类型定义。

二、selenium/webdriver/common

1、actions子目录

    <1> 基本定义
        input_device.py: 输入设备
            定义了InputDevice类,输入设备类能够进行交互动作。
        interaction.py : 交互动作
            定义了交互来源: key、pointer和none。
            其中,pointer有三种: mouse、touch和pen。
            同时还定义了一个Pause行为。
    <2> 键盘(key)输入
        key_input.py
            定义了键盘输入设备KeyInput和按键行为TypingInteraction。
        key_actions.py
            定义了键盘行为类KeyActions。
    <3> 指针(pointer)输入
        mouse_button.py
            定义了鼠标类MouseButton。
        pointer_input.py
            定义了指针输入设备PointerInput。
        pointer_actions.py
            定义了指针行为类PointerActions。
    <4> action_builder.py
        定义了动作行为构造类ActionBuilder,将行为绑定到WebDriver对象上。

2、html5子目录

    pplication_cache.py

        定义了WebDriver的缓存操作类ApplicationCache。

3、当前目录

    <1> 公共支持
        keys.py
            定义了键盘映射类Keys。
        by.py
            定义了WebDriver定位元素的方式类By。
            包括八种定位方法:
                ID : 元素ID
                XPATH : PATH路径
                    XPath查询基于浏览器自身的XPath引擎。
                    在不具备原生的XPath引擎(IE6,7,8)的浏览器,Selenium只支持XPath 1.0。
                LINK_TEXT : 超链接文本
                PARTIAL_LINK_TEXT : 部分超链接文本
                NAME : 名称
                TAG_NAME : Tag标签名称
                CLASS_NAME : class属性名称
                CSS_SELECTOR : CSS选择器
        utils.py
            定义了少数公共处理函数。
    <2> WebDriver服务器
        desired_capabilities.py
            定义了支持的webdriver服务器的描述类型DesiredCapabilities。
        proxy.py
            定义了代理类型描述类ProxyType和代理功能类Proxy。
        service.py
            定义了webdriver服务器的进程控制类Service。
    <3> 通用行为处理
        action_chains.py
            定义了动作行为接口类ActionChains,它包装了WebDriver对象和行为。
            它提供一系列的方法,可以执行目标WebDriver上的行为。
        touch_actions.py
            定义了独立的触摸动作行为接口类TouchActions。
        alert.py
            定义了WebDriver上警告的处理接口类Alert。

三、selenium/webdriver/remote

1、公共支持

    utils.py

        定义了少数数据处理方法,比如JSON和ZIP解压缩。
    command.py
        定义了WebDriver API交互的命令描述类Command。
    errorhandler.py
        定义了WebDriver API交互时的错误码描述类ErrorCode和错误处理类ErrorHandler。
    file_detector.py
        定义了一个本地文件检查类LocalFileDetector。
        在WebDriver基类中用到,参考file_detector_context上下文对象。
    getAttribute.js
        用于获取元素属性的一段内置JavaScript脚本,它被WebElement类用到。
    isDisplayed.js
        用于检查元素是否在浏览器中显示的JavaScript脚本,它被WebElement类用到。

2、WEB主要操作接口

    webdriver.py
        定义了一个WebDriver客户端的基类WebDriver,以及所支持的WEB操作方法。
    webelement.py
        定义了一个WEB元素类WebElement,以及它所支持的WEB元素操作方法。
    switch_to.py
        定义了一个WEB当前焦点切换的功能类SwitchTo。 

3、其它操作支持

    mobile.py
        定义了一个移动终端的基本控制类Mobile,主要对移动终端的网络连接和上下文进行操作。
        这个类并不直接参与WEB相关的处理,它主要操作的是移动终端本身。
    remote_connection.py
        定义了一个WebServer服务器的远程管理类RemoteConnection。
        WebDriver对象就是通过它来连接到webdriver.exe提供的服务,使用的是JsonWireProtocol协议。
        所有可以操作的命令都在RemoteConnection类进行了集成,它集成了Command类的所有命令;RemoteConnection类的execute(self, command, params)方法就是用来执行指令的。 

四、selenium/webdriver/chrome

    options.py
        定义了Chrome浏览器特定的选项控制类Options。
        比如浏览器的无头模式、插件控制、开发人员工具等等。
    service.py
        定义了Chrome浏览器的webdriver服务器的进程控制类Service,继承自公共的Service类。
    remote_connection.py
        定义类Chrome浏览器的webdriver服务器的远程管理类ChromeRemoteConnection,继承自RemoteConnection类。
    webdriver.py
        定义了Chrome浏览器的WebDriver客户端类WebDriver,继承自公共的WebDriver类。
        它使用与Chrome相关的Options、Service和ChromeRemoteConnection。
        有些浏览器不需要自己定义这些,而是直接使用公共的相关类。 

五、selenium/webdriver/support

    color.py
        定义了颜色处理类Color,和Web常用颜色字典Colors。
    events.py
        从abstract_event_listener.py导入了AbstractEventListener。
        从event_firing_webdriver.py导入了EventFiringWebDriver。
        <1> AbstractEventListener
            抽象类,用于WebDriver对象或HTML Element对象行为的前后绑定钩子。
            钩子函数的名称是有规律的,在行为函数名称的前面加before_或after_。
        <2> EventFiringWebDriver
            原始的WebDriver并没有行为事件监听功能。
            对WebDriver进行包装,包装了AbstractEventListener子类后的WebDriver就具备了事件监听功能。
            EventFiringWebDriver和普通的WebDriver一样,具有操作接口,只不过增加了监听功能。
        <3> EventFiringWebElement
            原始的WebElement并没有行为事件监听功能。
            对WebElement进行包装,包装了AbstractEventListener子类后的WebElement就具备了事件监听功能。
            EventFiringWebElement和普通的WebElement一样,具有操作接口,只不过增加了监听功能。
    ui.py
        从select.py导入了Select。
        从wait.py导入了WebDriverWait。
        <1> Select
            Select对一个WebElement的包装,包装之后它就具备了勾选等选择元素的操作功能。
        <2> WebDriverWait
            提供了一种设置交互超时和控制检验频率的方法,内部需要提供一个WebDriver。
    expected_conditions.py
        提供了一系列期望结果的条件判断方法,实现方式都是通过类实例的__call__方法。

猜你喜欢

转载自www.cnblogs.com/ringboow/p/11120128.html