Selenium模块/目录说明
目录说明:
selenium/common #定义了webdriver的异常类
selenium/webdriver #定义了webdriver所有python实现:
1.各种浏览器支持
2.各种UI操作方法
3.异常处理
4.定位方法
等等
以下为浏览器支持模块:
selenium/webdriver/android #android原生浏览器
selenium/webdriver/chrome #谷歌浏览器
selenium/webdriver/edge #微软edge浏览器
selenium/webdriver/firefox #火狐浏览器
selenium/webdriver/ie #微软ie浏览器
selenium/webdriver/opera #opera浏览器
selenium/webdriver/phantomjs #phantomjs headless浏览器(运行在内存模式)
selenium/webdriver/safari #safari浏览器
selenium/webdriver/webkitgtk #WebKitGTKDriver浏览器
selenium/webdriver/blackberry #blackberry浏览器
以下为浏览器支持模块:
selenium/webdriver/common #webdriver共用功能
selenium/webdriver/remote #webdriver核心代码实现
selenium/webdriver/support #webdriver辅助功能代码
以下模块为webdriver对外导出能力:当目录中包含了 __init__.py 时,当用 import 导入该目录时,会执行 __init__.py 里面的代码
就是说,当我 import webdriver 时会执行__init.py__下的代码
selenium/webdriver/__init__.py
\selenium\webdriver\common目录:
action_chains.py
提供了系列底层的自动化交互的方法,主要包括:鼠标移动、鼠标按键动作、按键和上下文菜单交互、鼠标拖曳等等
|
分类
|
函数名
|
描述
|
|
鼠标操作
|
def click(self, on_element=None)
|
鼠标左键单击
|
|
鼠标操作
|
def click_and_hold(self, on_element=None)
|
鼠标左键按键,不释放
|
|
鼠标操作
|
def context_click(self, on_element=None)
|
鼠标右击
|
|
鼠标操作
|
def double_click(self, on_element=None)
|
鼠标左键双击
|
|
鼠标操作
|
def drag_and_drop(self, source, target)
|
鼠标拖曳动作,将指定元素位置拖曳到目标元素位置,来移动元素
|
|
鼠标操作
|
def drag_and_drop_by_offset(self, source, xoffset, yoffset)
|
鼠标拖曳动作,将指定元素按沿x、y方向拖曳指定距离来移动元素
|
|
鼠标操作
|
def move_by_offset(self, xoffset, yoffset)
|
将鼠标光标沿x、y方向移动指定距离,来实现鼠标的移动
|
|
鼠标操作
|
def move_to_element(self, to_element)
|
将鼠标光标移动到指定的元素上
|
|
鼠标操作
|
def move_to_element_with_offset(self, to_element, xoffset, yoffset)
|
将鼠标光标移动到指定的元素相对元素左上角位置偏移(xoffset、yoffset)的位置
|
|
鼠标操作
|
def release(self, on_element=None)
|
释放鼠标,与click_and_hold函数配对使用
|
|
键盘操作
|
def key_down(self, value, element=None)
|
按下指定的键盘按键
|
|
键盘操作
|
def key_up(self, value, element=None)
|
释放已按下的键盘按键(与key_down配套使用)
|
|
键盘操作
|
def send_keys(self, *keys_to_send)
|
键盘输入
|
|
键盘操作
|
def send_keys_to_element(self, element, *keys_to_send)
|
给指定元素(可输入元素)进行键盘输入
|
|
其他
|
def perform(self)
|
执行所有存储的动作
|
|
其他
|
def reset_actions(self)
|
清空所有存储的动作
|
|
其他
|
def pause(self, seconds)
|
在指定的时间内暂定所有的输入
|
alert.py
定义和实现了alert弹出的处理方法
by.py
定义了常用的定位方式,例如id、name、xpath等
desired_capabilities.py
定义和实现了不同浏览器的DesiredCapabilities,例如ie、firefox、edge、chrome等等
keys.py
定义了各键盘各功能键的code,例如F1、F2、shift等等这类的按键的code
proxy.py
定义和实现了代理,主要有http代理、ftp代理、ssl代理、sock代理等等
service.py
定义和实现连接、关闭等基础服务
touch_actions.py
定义和实现移动设备的一些基本操作,例如点击、双击、按住等等
utils.py
实现了一些辅助性质的能力
\selenium\webdriver\common\actions目录:
action_builder.py
实现了移动端动作的构建能力
input_device.py
描述用于可操作的输入设备
interaction.py
定义了交互封装
key_actions.py
定义和实现移动端键盘动作行为
key_input.py
定义和实现移动端键盘动作的创建等能力
mouse_button.py
定义了鼠标按键的标识
pointer_actions.py
定义和实现屏幕点击等动作
pointer_input.py
定义和实现屏幕点击等基础能力
\selenium\webdriver\remote目录:
__init__.py
导入remote模块时调用这个方法
command.py
定义了webdriver标准的命令常量,这些常量本身是没有意义的,但其标识了webdriver远程通信协议(webdriver's remote wire protocols)
errorhandler.py
定义和实现了webdriver错误编码和错误处理类
file_detector.py
定义和实现了文件侦测类
mobile.py
定义和现实了移动端的连接和context指令机制
remote_connection.py
扩展了url_request.Request实现,和webdriver remote server通信交互就这个模块实现了,有兴趣的可以深入研究
switch_to.py
定义和实现了切换至alert、window、frame、active等系列动作
utils.py
定义和实现了一些辅助功能,例如格式化为json、加载json,压缩文件等等
webdriver.py
这是应用核心了,我们日常自动化测试调用的方法大都来源这个模块,必须掌握该模块提供的方法,该模块提供的方法有:浏览器操作类(例如cookie管理、刷refresh),元素定位类(以find_element_ 开头的各种定位函数)等等,这里就不一一列举,后续针对webdriver常用的方法,提供一个清单出来以供参考。
webelement.py
web元素操作类,定义了web元素操作的各种方法,必须掌握
\selenium\webdriver\support目录:
__init__.py
导入remote模块时调用这个方法
abstract_event_listener.py
事件监听器基类,定义了各种事件监听基础方法,该模块为做实现
color.py
定义和现实颜色转换支持类、方法和常量
event_firing_webdriver.py
定义和实现webdriver和WebElement事件触发类
events.py
统一对外导出AbstractEventListener和EventFiringWebDriver
expected_conditions.py
针对页面title、元素操作/文本/可见等、窗口打开等定义和实现了一系列的断言验证方法
select.py
定义和实现了对select标准下拉框元素的系列操作方法
ui.py
统一对外导出了Select和WebDriverWait
wait.py
定义和实现了设置webdriver超时机制
\selenium\common\ exceptions.py异常模块
异常类:
|
异常
|
描述
|
|
WebDriverException
|
基本webdriver异常 |
|
ErrorInResponseException
|
当服务器端发生错误时抛出 |
|
InvalidSwitchToTargetException
|
切换的窗口或frame不存在时抛出该异常
|
|
NoSuchFrameException
|
切换的frame不存在时抛出该异常
|
|
NoSuchWindowException
|
切换的窗口不存在时抛出该异常
|
|
NoSuchElementException
|
未找到元素时抛出该异常
|
|
NoSuchAttributeException
|
未找到元素的指定属性时抛出该异常
|
|
StaleElementReferenceException
|
引用一个不存在的元素时抛出该异常
|
|
InvalidElementStateException
|
当元素状态无效时导致webdriver指令无法完成时,抛出该异常
|
|
UnexpectedAlertPresentException
|
当alert弹出导致webdriver指令阻塞时抛出该异常
|
|
NoAlertPresentException
|
当切换至一个不存在的alert弹窗时抛出该异常
|
|
ElementNotVisibleException
|
当操作不可见元素时抛出该异常
|
|
ElementNotInteractableException
|
当一个元素出现在DOM中但是发生交互时抛出
|
|
ElementNotSelectableException
|
试图选择不可选的元素时抛出
|
|
InvalidCookieDomainException
|
试图在与当前URL不同的域下添加cookie时抛出。
|
|
UnableToSetCookieException
|
设置cookie失败时抛出该异常
|
|
RemoteDriverServerException
|
远程webdriver服务异常时抛出该异常
|
|
TimeoutException
|
webdirver指令超时时抛出该异常
|
|
MoveTargetOutOfBoundsException
|
当目标提供给“ActionsChains”move()时抛出
|
|
UnexpectedTagNameException
|
使用tag name定位失败时抛出该异常
|
|
InvalidSelectorException
|
当使用了无效的定位选择器时抛出该异常
|
|
ImeNotAvailableException
|
当IME支持不可用时抛出。
|
|
ImeActivationFailedException
|
启动IME引擎失败时抛出。
|
|
InvalidArgumentException
|
传递给命令的参数不是无效就是格式错误。
|
|
JavascriptException
|
执行js异常时抛出该异常
|
|
NoSuchCookieException
|
获取不存在的cookie时抛出该异常
|
|
ScreenshotException
|
截屏异常
|
|
ElementClickInterceptedException
|
单击元素交互异常时抛出该异常
|
|
InsecureCertificateException
|
SSL证书异常时抛出该异常
|
|
InvalidCoordinatesException
|
提供给交互操作的坐标无效。
|
|
InvalidSessionIdException
|
webdriver session(会话)异常时(例如会话无效),抛出该异常
|
|
SessionNotCreatedException
|
无法创建新的webdriver会话时抛出该异常
|
|
UnknownMethodException
|
未知方法异常
|
——本文为整理网上资源,部分补充
浙公网安备 33010602011771号