Selenium
包结构概述
Selenium
包结构如下:
selenium
├─common
└─webdriver
├─android
├─blackberry
├─chrome
├─common
│ ├─actions
│ └─html5
├─edge
├─firefox
├─ie
├─opera
├─phantomjs
├─remote
├─safari
├─support
└─webkitgtk
common
包:仅包含exceptions.py
模块,定义了异常类。webdriver
包:核心APIremote
包定义了核心基类,其中webdriver.py
和webelement.py
是API中的关键,定义了浏览器的通用操作方法和元素的处理方法。common
包定义键盘事件、鼠标事件、触屏事件、浏览器参数设置、元素定位、代理等基础行为处理。support
包定义了事件处理、事件触发、UI、超时处理等基类。android
、backberry
、chrome
、edge
、firefox
、ie
、opera
、phantomjs
、safari
、webkitgtk
等子包为对不同浏览器的支持。
Selenium
包、模块结构及功能详细说明
│ __init__.py # 定义__version__属性
│
├─common #一级子包
│ │ exceptions.py # 定义异常类
│ │ __init__.py # 导入异常类
│
├─webdriver # 一级子包,核心API包
│ │ __init__.py # 命名空间整合,定义了各浏览器API的快捷接口
│ │
│ ├─android # 二级子包,Android端webview支持
│ │ │ webdriver.py # 使用WebView创建Selendroid实例
│ │ │ __init__.py
│ │
│ ├─blackberry # 二级子包,黑莓手机浏览器支持
│ │ │ webdriver.py
│ │ │ __init__.py
│ │
│ ├─chrome # 二级子包,Chrome浏览器支持
│ │ │ options.py
│ │ │ remote_connection.py
│ │ │ service.py
│ │ │ webdriver.py
│ │ │ __init__.py
│ │
│ ├─common # 二级子包,定义了键盘事件、鼠标事件、触屏事件、浏览器参数设置、元素定位、代理等基础行为处理
│ │ │ action_chains.py # 定义了底层的自动化交互的方法,如鼠标移动、鼠标按键等
│ │ │ alert.py # 定义了alert弹出的处理方法
│ │ │ by.py # 仅有一个By类作为命名空间,定义了8个类变量,即元素定位策略集合
│ │ │ desired_capabilities.py # 定义和实现了不同浏览器的DesiredCapabilities
│ │ │ keys.py # 仅有一个Keys类作为命名空间,定义了各种功能键的Unicode编码
│ │ │ proxy.py # 定义了各类代理的实现
│ │ │ service.py # 定义了连接、关闭等基础服务
│ │ │ touch_actions.py # 定义了移动设备的一些基础操作
│ │ │ utils.py # 定义了一些的辅助函数
│ │ │ __init__.py
│ │ │
│ │ ├─actions # 三级子包,移动端各类actions支持
│ │ │ │ action_builder.py # 定义了移动端动作构建类
│ │ │ │ input_device.py # 描述了输入设备动作的基本操作
│ │ │ │ interaction.py # 定义了交互、暂停的基类
│ │ │ │ key_actions.py # 定义了键盘事件处理
│ │ │ │ key_input.py # 定义了输入事件处理
│ │ │ │ mouse_button.py # 定义了鼠标按钮编码
│ │ │ │ pointer_actions.py # 定义了屏幕点击事件处理
│ │ │ │ pointer_input.py # 定义了屏幕输入事件处理
│ │ │ │ __init__.py
│ │ │
│ │ ├─html5 # 三级子包,HTML5支持
│ │ │ │ application_cache.py # 定义了应用缓存的状态编码和缓存状态的获取方法
│ │ │ │ __init__.py
│ │
│ ├─edge # 二级子包,edge浏览器支持
│ │ │ options.py
│ │ │ service.py
│ │ │ webdriver.py
│ │ │ __init__.py
│ │
│ ├─firefox # 二级子包,Firefox浏览器支持
│ │ │ extension_connection.py
│ │ │ firefox_binary.py
│ │ │ firefox_profile.py
│ │ │ options.py
│ │ │ remote_connection.py
│ │ │ service.py
│ │ │ webdriver.py
│ │ │ webdriver.xpi
│ │ │ webdriver_prefs.json
│ │ │ webelement.py
│ │ │ __init__.py
│ │
│ │ ├─amd64
│ │ │ x_ignore_nofocus.so
│ │ │
│ │ ├─x86
│ │ │ x_ignore_nofocus.so
│ │
│ ├─ie # 二级子包,IE浏览器支持
│ │ │ options.py
│ │ │ service.py
│ │ │ webdriver.py
│ │ │ __init__.py
│ │
│ ├─opera # 二级子包,Opera浏览器支持
│ │ │ options.py
│ │ │ webdriver.py
│ │ │ __init__.py
│ │
│ ├─phantomjs # 二级子包,phantomjs支持,不过phantomjs项目已经废弃了
│ │ │ service.py
│ │ │ webdriver.py
│ │ │ __init__.py
│ │
│ ├─remote # 二级子包,定义了selenium操作的核心基类。
│ │ │ command.py # 定义了各类标准WebDriver命令的常量
│ │ │ errorhandler.py # 定义了WebDriver的错误代码和异常处理
│ │ │ file_detector.py # 定义了文件检测类
│ │ │ getAttribute.js
│ │ │ isDisplayed.js
│ │ │ mobile.py # 定义了移动端的连接和上下文管理
│ │ │ remote_connection.py
│ │ │ switch_to.py # 定义了iframe切换管理
│ │ │ utils.py # 定义了json文件、压缩文件操作函数
│ │ │ webdriver.py # 定义了WebDriver操作类
│ │ │ webelement.py # 定义了元素操作类
│ │ │ __init__.py
│ │
│ ├─safari # 二级子包,Safari浏览器支持
│ │ │ permissions.py
│ │ │ remote_connection.py
│ │ │ service.py
│ │ │ webdriver.py
│ │ │ __init__.py
│ │
│ ├─support # 二级子包,定义了事件处理、事件触发、UI、超时处理等基类
│ │ │ abstract_event_listener.py # 定义了事件监听器基类
│ │ │ color.py # 定义了颜色转换支持类、方法和常量
│ │ │ events.py # 命名空间整合,导入了AbstractEventListener类和EventFiringWebDriver类
│ │ │ event_firing_webdriver.py # 定义了webdriver和WebElement事件触发类
│ │ │ expected_conditions.py # 定义了浏览器各类操作实现的验证方法
│ │ │ select.py # 定义了select控件的操作方法
│ │ │ ui.py # 命名空间整合,导入Select和WebDriverWait类
│ │ │ wait.py # 定义了webdriver的超时机制
│ │ │ __init__.py
│ │
│ ├─webkitgtk # 二级子包,webkitgtk支持
│ options.py
│ service.py
│ webdriver.py
│ __init__.py