python+selenium 鼠标事件操作方法


Posted in Python onAugust 24, 2019

一、前言

除了可以使用 click( ) 来模拟鼠标的单击操作,现在Web产品中还提供了更丰富的鼠标交互方式,例如鼠标右键、双击、悬停、拖动等功能,在WebDriver中,将这些关于鼠标操作的方法都封装在 ActionChains 类中。

ActionChains 类提供了鼠标操作的常用方法:

perform() 执行所有ActionChains中存储的行为
context_click() 右击
double_click() 双击
drag_and_drop() 拖动
move_to_element() 鼠标悬停

二、详细使用

1.鼠标右击操作

from selenium import webdriver
#引入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
 
driver = webdriver.Chrome()
driver.get("url")
#......
#定位到需要右击的元素
right_click = driver.find_element_by_id("id")
#对元素进行右击操作
ActionChains(driver).context_click(right_click).perform()
#......

ActionChains(driver):调用ActionChains类,将浏览器驱动driver作为参数传入;

perform():执行所有ActionChains中存储的行为,可以理解成是对整个操作的提交动作;

2.鼠标悬停

move_to_element()方法可以模拟鼠标悬停的动作,其用法与context_click()相同;

from selenium import webdriver
#引入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
 
driver = webdriver.Chrome()
driver.get("url")
#......
#定位到需要悬停的元素
above = driver.find_element_by_id("id")
#对元素进行右击操作
ActionChains(driver).move_to_element(above).perform()
#......

3.鼠标双击

double_click() 方法用于模拟鼠标双击操作;

from selenium import webdriver
#引入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
 
driver = webdriver.Chrome()
driver.get("url")
#......
#定位到需要双击的元素
double_click = driver.find_element_by_id("id")
#对元素进行右击操作
ActionChains(driver).double_click(double_click).perform()
#......

4.鼠标拖动操作

drag_and_drop(source,target) 在源位置元素上按住鼠标左键,然后移动到目标元素上释放。

source:鼠标拖动的源元素

target:鼠标释放的目标元素

from selenium import webdriver
#引入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
 
driver = webdriver.Chrome()
driver.get("url")
#......
#定位元素的源位置
source = driver.find_element_by_id("id")
#定位元素要移到到的目标位置
target = driver.find_element_by_id("id")
#对元素进行拖动操作
ActionChains(driver).drag_and_drop(source,target).perform()
#......

以上这篇python+selenium 鼠标事件操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用python读写excel的方法
Nov 18 Python
用生成器来改写直接返回列表的函数方法
May 25 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
python实现从pdf文件中提取文本,并自动翻译的方法
Nov 28 Python
用python实现刷点击率的示例代码
Feb 21 Python
浅谈Python反射 & 单例模式
Mar 21 Python
python3.7实现云之讯、聚合短信平台的短信发送功能
Sep 26 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
opencv resize图片为正方形尺寸的实现方法
Dec 26 Python
Pycharm最常用的快捷键及使用技巧
Mar 05 Python
python3通过qq邮箱发送邮件以及附件
May 20 Python
python基础之爬虫入门
May 10 Python
python+selenium select下拉选择框定位处理方法
Aug 24 #Python
Python封装成可带参数的EXE安装包实例
Aug 24 #Python
python识别文字(基于tesseract)代码实例
Aug 24 #Python
python图片二值化提高识别率代码实例
Aug 24 #Python
关于Python形参打包与解包小技巧分享
Aug 24 #Python
python-序列解包(对可迭代元素的快速取值方法)
Aug 24 #Python
对python中的装包与解包实例详解
Aug 24 #Python
You might like
php重定向的三种方法分享
2012/02/22 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
JavaScript入门教程(9) Document文档对象
2009/01/31 Javascript
nodejs实现黑名单中间件设计
2014/06/17 NodeJs
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
详解小程序开发经验:多页面数据同步
2019/05/18 Javascript
vue父子模板传值问题解决方法案例分析
2020/02/26 Javascript
实例讲解python函数式编程
2014/06/09 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
关于Tensorflow使用CPU报错的解决方式
2020/02/05 Python
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
Swanson中国官网:美国斯旺森健康产品公司
2021/03/01 全球购物
化学教师教学反思
2014/01/17 职场文书
社区工作者先进事迹
2014/01/18 职场文书
档案保密承诺书
2014/06/03 职场文书
协会周年庆活动方案
2014/08/26 职场文书
个人委托书范本
2014/09/13 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
集结号观后感
2015/06/08 职场文书
竞选稿之小学班干部
2019/10/31 职场文书
浅谈Redis位图(Bitmap)及Redis二进制中的问题
2021/07/15 Redis
Python Matplotlib绘制动画的代码详解
2022/05/30 Python