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__方法。

posted on 2019-07-02 13:45 丘奇先生 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/ringboow/p/11120128.html

Selenium学习 - 库代码解析相关推荐

  1. 对比学习 ——simsiam 代码解析。

    Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...

  2. 对比学习 ——simsiam 代码解析。:

    目录 1 : 事先准备 . 2 : 代码阅读. 2.1: 数据读取 2.2: 模型载入 3 训练过程: 4 测试过程: 5 :线性验证 6 : 用自己数据集进行对比学习. 第一:  改数据集 : 2 ...

  3. spark学习-29-源代码解析从start-all.sh脚本开始

    1.概述 1.先总体看一下启动脚本 2.start-all.sh if [ -z "${SPARK_HOME}" ]; thenexport SPARK_HOME="$( ...

  4. 广西大学计算机系上机题库代码一览20级

    广西大学2020级计算机系题库代码解析与参考答案 文章目录 前言 一.判断升序 极简版 标准版 二.小西的排序 极简版(快速排序) 标准版(冒泡排序) 三.小西的数(动词)数(名词) 暴力思维极简 纯 ...

  5. 手把手教 | 深度学习库PyTorch(附代码)

    原文标题: An Introduction to PyTorch – A Simple yet Powerful Deep LearningLibrary 作者:FAIZAN SHAIKH 翻译:和中 ...

  6. 对抗思想与强化学习的碰撞-SeqGAN模型原理和代码解析

    GAN作为生成模型的一种新型训练方法,通过discriminative model来指导generative model的训练,并在真实数据中取得了很好的效果.尽管如此,当目标是一个待生成的非连续性序 ...

  7. 从零开始编写深度学习库(四)Eigen::Tensor学习使用及代码重构

    从零开始编写深度学习库(四)Eigen::Tensor学习使用及代码重构 博客:http://blog.csdn.net/hjimce 微博:黄锦池-hjimce   qq:1393852684 一. ...

  8. YOLO-V5 算法和代码解析系列 —— 学习路线规划综述

    目录标题 为什么学习 YOLO-V5 ? 博客文章列表 面向对象 开源项目学习方法 预备知识 项目目录结构 为什么学习 YOLO-V5 ? 算法性能:与YOLO系列(V1,V2,V3,V4)相比,YO ...

  9. [pytorch] PyTorch Metric Learning库代码学习二 Inference

    PyTorch Metric Learning库代码学习二 Inference Install the packages Import the packages Create helper funct ...

最新文章

  1. 无法解析 list 中的方法 iterator_Python-list中的append()和extend()方法区别
  2. Java迭代器ListIterator
  3. asp.net mvc的初学
  4. datatable中某一列最小值_获取DataTable 某一列所有值
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的汽车饰品销售系统
  6. 异步调用WebService
  7. 如果你走投无路时,会不会去摆摊做小生意?
  8. 【计算机网络】网络协议与计算机网络体系结构(OSI参考模型、TCP/IP体系、网络通信标准化组织)及 Java网络编程
  9. 生产者消费者模型-管程法(Java)
  10. 我们体验了宝马自然语音识别,还给它出了几道「附加题」
  11. 牛客练习-哈尔滨理工大学21级新生程序设计竞赛(同步赛)
  12. centos6.5系统执行mv /* /path,只能用cd命令,如何恢复
  13. Nachos-Lab1-完善线程机制
  14. ActionScript Adobe Flash Builder Adobe Flash CC 学习笔记
  15. 2017腾讯暑期实习生从笔试到面试总结(附带华为、阿里面试经历)
  16. 苹果手机怎么用计算机打出字,使用苹果手机的注意啦!iphone输入法不好用?这些使用技巧教给你...
  17. (仿微信Android)IM聊天+抢红包+直播+朋友圈源码发布了
  18. 如何关闭WPS烦人的广告推送
  19. 使用 html2canvas 生成图片
  20. 用于Transformer的6种注意力的数学原理和代码实现

热门文章

  1. Untiy的阿拉伯文本适配
  2. 计算机网络基础以及linux面试知识点总结
  3. 想调节—下父元素的透明度,但是又不影响子元素的透明度,怎么破?
  4. 抖音、快手打起来了,互联网大佬集体内卷?
  5. android+路由器+名称,手机更改路由器名称
  6. 报错:Solving environment: failed with initial frozen solve. Retrying with flexible solve.
  7. python typing overload
  8. 沟通和编程一样,也是一门艺术系列1(最佳的沟通态度)
  9. 发现新的恶意 Torii IoT 僵尸网络
  10. bzoj2005 NOI2010 方案统计