selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类分析
·5 |webdriver/common/action_chains.py-ActionChains类分析
- 1 源码路径
- 2 功能描述
- 3 使用方法
- 4 几个方法
- 4.1 `__init__`方法
- 4.2 `perform`方法
- 4.3 `reset_actions`方法
- 5 ActionChains类API
- 6 实例
1 源码路径
selenum/webdriver/common/action_chains.py
2 功能描述
- 提供鼠标操作,模拟用户的鼠标行为;
- 如鼠标的各种单击、双击、滑动、拖拽等操作。
3 使用方法
- 源码说的很清晰了,只要使用以下的方法即可:
ActionChains can be used in a chain pattern::menu = driver.find_element_by_css_selector(".nav")hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")ActionChains(driver).move_to_element(menu).click(hidden_submenu).perform()Or actions can be queued up one by one, then performed.::menu = driver.find_element_by_css_selector(".nav")hidden_submenu = driver.find_element_by_css_selector(".nav #submenu1")actions = ActionChains(driver)actions.move_to_element(menu)actions.click(hidden_submenu)actions.perform()
4 几个方法
4.1 __init__
方法
- 需要传递一个
driver
,这个在实际应用中就是使用这个类的时候需要传递一个driver
- 源码:
def __init__(self, driver):"""Creates a new ActionChains.:Args:- driver: The WebDriver instance which performs user actions."""self._driver = driverself._actions = []if self._driver.w3c:self.w3c_actions = ActionBuilder(driver)
4.2 perform
方法
- 用来执行存储的所有动作或操作;
- 源码:
def perform(self):"""Performs all stored actions."""if self._driver.w3c:self.w3c_actions.perform()else:for action in self._actions:action()
4.3 reset_actions
方法
- 用来清空所有的动作;
- 源码:
def reset_actions(self):"""Clears actions that are already stored locally and on the remote end"""if self._driver.w3c:self.w3c_actions.clear_actions()self._actions = []
5 ActionChains类API
API | 说明 |
---|---|
perform(self)
|
执行已经存储的操作 |
reset_actions(self)
|
清除已存储在本地和远程端的操作 |
click(self, on_element=None)
|
单击元素,如果元素没有,单击当前鼠标位置 |
click_and_hold(self, on_element=None)
|
鼠标左键按住某个元素,如果有on_element则点击,如果没有则默认点击鼠标所在位置 |
context_click(self, on_element=None)
|
右键单击,如果有on_element则点击,如果没有则默认点击鼠标所在位置 |
double_click(self, on_element=None):
|
鼠标双击,如果有on_element则双击,如果没有则默认点击鼠标所在位置 |
drag_and_drop(self, source, target)
|
鼠标左键拖拽, 即用鼠标把一个元素拖到另一个元素上 |
drag_and_drop_by_offset(self, source, xoffset, yoffset)
|
鼠标左键拖拽, 鼠标从源元素拖拽到源元素的x,y轴偏移量上并释放鼠标 |
key_down(self, value, element=None)
|
按下按键,只应用于修饰健:Control, Alt and Shift |
key_up(self, value, element=None)
|
释放按键,只应用于修饰健:Control, Alt and Shift |
move_by_offset(self, xoffset, yoffset)
|
鼠标移动,将鼠标移动到当前位置的xy偏移量 |
move_to_element(self, to_element)
|
鼠标悬停在当前元素上 |
move_to_element_with_offset(self, to_element, xoffset, yoffset)
|
将鼠标从元素的左上角开始计算开始偏移,偏移量为xy |
pause(self, seconds)
|
在指定的持续时间(秒)内暂停所有输入 |
release(self, on_element=None)
|
在元素上释放鼠标按钮,如果没有元素,则在当前位置释放 |
send_keys(self, *keys_to_send)
|
在当前位置发送按键 ,键常量在Keys类中 |
send_keys_to_element(self, element, *keys_to_send)
|
发送按键在当前定位元素上,键常量在Keys类中 |
6 实例
- 输入百度网址
- 输入NoamaNelson
- 回车搜索
- 最大化窗口
- 全选输入的内容,重新输入N
- 点击“百度一下”进行搜索
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2022/5/16
# 文件名称:selen_stu.py
# 作用:打开百度输入NoamaNelson
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelsonfrom selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import timedriver = webdriver.Chrome()
driver.get("http://www.baidu.com")driver.find_element_by_id("kw").send_keys("NoamaNelson")
time.sleep(1)
driver.find_element_by_id("kw").send_keys(Keys.ENTER)
driver.maximize_window()
time.sleep(0.5)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,"a")
time.sleep(0.5)
driver.find_element_by_id("kw").send_keys("N")
su = driver.find_element_by_id("su")
ActionChains(driver).click(su).perform()
time.sleep(1)
driver.quit()
『全栈测试技术,分享,共勉,共进,提升』
selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类分析相关推荐
- selenium源码通读·5 |webdriver/common/action_chains.py-ActionChains类
1 源码路径 selenum/webdriver/common/action_chains.py 2 功能描述 提供鼠标操作,模拟用户的鼠标行为: 如鼠标的各种单击.双击.滑动.拖拽等操作. 3 使用 ...
- selenium源码通读·4 |webdriver/common分析
·4 |webdriver/common分析 1 定义 2 common目录 3 actions.html5 目录 4 目录说明 5 实例演示 1 定义 selenium/webdriver/comm ...
- selenium源码通读·12 |webdriver/remote分析
·12 |webdriver/remote分析 1 源码路径 2 功能说明 3 部分功能详解 3.1 command.py 3.2 errorhandler.py 1 源码路径 selenium/we ...
- 记录自己看selenium源码的一些收获(五)RemoteWebDriver类
记录这个重要类的成员和方法(它是所有其他浏览器driver类的超类) 成员:这些成员有不同的setter getter方法. // Selenium的日志入口private static final ...
- 高并发 WEB 服务器 nginx 源码通读中文分析注释,带详细函数注释及函数调用注释,附 github 地址,后期持续维护更新...
github地址:https://github.com/y123456yz/reading-code-of-nginx-1.9.2 对源码通读注释,函数进行了详细注释.同时对相关功能进行了优化,日志功 ...
- Postgresql源码(85)查询执行——表达式解析器分析(select 1+1如何执行)
相关 <Postgresql源码(61)查询执行--最外层Portal模块> <Postgresql源码(62)查询执行--子模块ProcessUtility> <Pos ...
- 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用简介 | Launcher 应用源码简介 | Launcher 应用快捷方式图标点击方法分析 )
文章目录 一. Launcher 应用简介 二. Launcher 应用源码简介 三. Launcher 图标点击方法分析 一. Launcher 应用简介 Launcher 应用 : Android ...
- SpringCloud组件 源码剖析:Eureka服务注册方式流程全面分析
在SpringCloud组件:Eureka服务注册是采用主机名还是IP地址?文章中我们讲到了服务注册的几种注册方式,那么这几种注册方式的源码是怎么实现的呢?我们带着这一个疑问来阅读本章内容能够让你更深 ...
- faster rcnn源码解读(三)train_faster_rcnn_alt_opt.py
转载自:faster rcnn源码解读(三)train_faster_rcnn_alt_opt.py - 野孩子的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/u ...
最新文章
- 【计算摄影】计算机如何学会自动裁剪图片(自动构图)?
- ASP.NET的MVC中使用Session做身份验证(附代码下载)
- NYOJ 70 阶乘因式分解(二)
- Unity 音频优化方案
- python基础入门(10)之循环语句
- dns服务器的配置与管理
- 假如 AI 时代少了软件可信,我们将面临什么?
- kernel or user oops信息定位步骤
- 美团java后端面试题目_美团笔试题(Java后端5题2小时)
- 2022考研笔记-政治(思修)
- r730 raid5 linux 驱动,DELL R720安装REDHAT5.1 RAID驱动问题
- usc week 5 计算几何(包含凸包) 队内练习题
- 积木Sketch插件进阶开发指南
- stm32f107使用外部16MHz晶振
- Me-tetrazine-Disulfo-Cyanine5,甲基四嗪-磺酸基菁染料Cy5,蓝色固体
- android声音大小锁定,固定音量锁(锁定音量)app
- 联想e470c怎么修改电脑语言,联想ThinkPad E470自带win10系统如何改win7系统
- Android10.0 Service启动源码解析
- 广西铁路局计算机类待遇怎么样,南宁铁路局月薪待遇 如何进入铁路工作
- ES6给对象部署Iterator