Python+Selenium+Unittest 之selenium13--WebDriver操作方法3-鼠标操作2

news2024/11/22 23:56:55

        这篇说下ActionChains里常用的几种鼠标操作的方法。

ActionChains常用的鼠标操作方法
click()鼠标左键单击
double_click()鼠标左键双击
context_click()鼠标右键单击
move_to_element()鼠标移动到某个元素上(鼠标悬浮操作)
click_and_hold()点击鼠标左键,不松开
drag_and_drop()拖拽到某个元素然后松开
drag_and_drop_by_offset()拖拽到某个坐标然后松开
move_by_offset()

从当前位置移动到某个坐标

move_to_element_with_offset()

移动到距某个元素多远

pause()鼠标停止操作
release()在某个元素上释放鼠标按钮

        以上是常用的鼠标操作,这里简单举例下平时工作中用到的最多的几种方法。

目录

1、click(元素)

2、double_click(元素)

3、context_click()

4、click_and_hold()

5、release()

 6、move_to_element()

7、move_by_offset()

8、move_to_element_with_offset()

9、drag_and_drop()

10、drag_and_drop_by_offset()


1、click(元素)

      click()就是鼠标点击左键的操作,找到需要鼠标左键点击的元素后,填入到括号中即可。

from selenium import webdriver              #导入selenium模块的webdriver
from selenium.webdriver import ActionChains #导入ActionChains类
driver = webdriver.Chrome()           #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器  
baidu_cl=driver.find_element_by_link_text("新闻")    #定位元素新闻按钮并赋值给baidu_cl
ActionChains(driver).click(baidu_cl).perform()      #发出点击新闻按钮的指令并执行

2、double_click(元素)

        double_click()是鼠标左键双击的操作,具体用法和鼠标点击一样,找到需要双击的元素,填写到括号中即可。

d_click=driver.find_element_by_id("元素id")    #定位到某个元素然后定义为d_click
ActionChains(driver).double_click(d_click).perform()      #发出双击某个元素的指令并执行

3、context_click()

      context_click()模拟的是鼠标右键单击的操作,具体用法同鼠标单击的操作,找到需要鼠标右键的元素,填写到括号中即可。

r_click=driver.find_element_by_id("元素id")    #定位到某个元素然后定义为r_click
ActionChains(driver).context_click(r_click).perform()      #发出右击某个元素的指令并执行

下面的4、5可以结合着6、7、8一起使用,就可以模拟鼠标拖拽的操作。

4、click_and_hold()

        click_and_hold()模拟的是点击元素并且不松开鼠标左键的操作就是类似人为的按住鼠标左键不松的行为,具体操作方法为click_and_hold(元素)。

hold_click=driver.find_element_by_id("元素id")    #定位到某个元素然后定义为hold_click
ActionChains(driver).click_and_hold(hold_click).perform()      #发出按住某个元素的指令并执行

   

5、release()

        release()模拟的是松开鼠标的按键的操作,一般结合着上面的click_and_hold()操作使用。

hold_click=driver.find_element_by_id("元素id")    #定位到某个元素然后定义为hold_click
ActionChains(driver).click_and_hold(hold_click).release().perform()      #发出按住某个元素的指令,执行完后,执行松开按键的操作

 6、move_to_element()

        move_to_element()是鼠标移动到某个元素的操作,可以用来做鼠标悬浮使用,比如在百度首页的设置,我们得先把鼠标放到设置按钮上,才可以进行下面的点击操作,move_to_element()就可以完成这个指令,具体使用方式时,找到需要悬浮的元素,然后填入到括号里即可。

from selenium import webdriver     #导入selenium模块的webdriver
import time       #导入time模块
from selenium.webdriver import ActionChains #导入ActionChains类
driver = webdriver.Chrome()           #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.maximize_window()      #全屏显示
setting = driver.find_element_by_id("s-usersetting-top")    #鼠标悬浮在设置按钮上
ActionChains(driver).move_to_element(setting).perform()   #执行上述操作
time.sleep(3)    #等待3秒
setting2 = driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[4]')   #点击隐私设置
ActionChains(driver).click(setting2).perform()     #执行操作

7、move_by_offset()

        move_by_offset()表示的操作为鼠标移动到某个位置,具体使用是需要再move_by_offset()括号里填上方位,原点是当前鼠标停留的位置,然后分为x轴和y轴,填入的方式为move_by_offset(x,y),以当前鼠标为原点,向左移动x就填正数,向右则为负数,向上移动y填正数,向下移动y填负数,运行完羡慕代码后会看到鼠标停留在了关闭预测的位置,并进行了点击。

from selenium import webdriver     #导入selenium模块的webdriver
import time       #导入time模块
from selenium.webdriver import ActionChains #导入ActionChains类
driver = webdriver.Chrome()           #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.maximize_window()      #全屏显示
setting = driver.find_element_by_id("s-usersetting-top")    #鼠标悬浮在设置按钮上
ActionChains(driver).move_to_element(setting).perform()   #执行上述操作
time.sleep(3)    #等待3秒
ActionChains(driver).move_by_offset(0,100).click().perform()     #执行向下移动100个px距离的操作,并进行点击

8、move_to_element_with_offset()

        move_to_element_with_offset()操作为移动到距离某个元素多少的坐标,在括号里填写 move_to_element_with_offset(元素,x,y),先找到某个元素,然后以该元素为原点进行移动。

from selenium import webdriver     #导入selenium模块的webdriver
import time       #导入time模块
from selenium.webdriver import ActionChains #导入ActionChains类
driver = webdriver.Chrome()           #webdriver.Chrome()是启动谷歌浏览器然后定义成变量driver
driver.get("https://www.baidu.com")   #打开百度浏览器
driver.maximize_window()      #全屏显示
setting = driver.find_element_by_id("s-usersetting-top")    #鼠标悬浮在设置按钮上
ActionChains(driver).move_to_element(setting).perform()   #执行上述操作(不执行这个操作看不出来效果)
time.sleep(3)    #等待3秒
ActionChains(driver).move_to_element_with_offset(setting,0,100).perform()  #移动到设置按钮上,然后向下移动100px

9、drag_and_drop()

         drag_and_drop()的操作是找到第一个元素,然后按住鼠标拖拽到第二个元素的位置。需要再括号里填入两个元素,起始元素和需要移动到的元素drag_and_drop(起始元素,终止元素)。

start1 = driver.find_element_by_id("起始元素")    #定位到某个元素然后定义为start1
stop1 = driver.find_element_by_id("终止元素")    #定位到某个元素然后定义为stop1
ActionChains(driver). drag_and_drop(start1,stop1).perform()   #发出命令定位到start1元素然后按住鼠标,之后移动到stop1后松开鼠标,并执行

10、drag_and_drop_by_offset()

        drag_and_drop_by_offset()和9有点类似,操作是定位到某个元素后,以该元素为原点,然后拖拽到某个坐标,具体写法为drag_and_drop_by_offset(元素,x,y)。

start2 = driver.find_element_by_id("起始元素")    #定位到某个元素然后定义为start2
ActionChains(driver). drag_and_drop_by_offset(start2,0,100).perform()   #发出命令定位到start2元素然后按住鼠标,之后拖动到以该元素为原点的向右移动100px的位置,并执行


       如果大家在使用过程中遇到了问题,可以在文章下留言,或者关注公众号:刘阿童木的进化记录,进行留言

                   下图为公众号二维码,内容会同步发出,大家可以关注一起学习!

                                   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1394411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

合并K个升序链表(LeetCode 23)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一:顺序合并方法二:分治合并方法三:使用优先队列合并 参考文献 1.问题描述 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff…

Flink的KeyedProcessFunction基于Event Time和Process Time的定时器用法实例分析

FLink处理函数简介 在Flink底层,我们可以不定义任何具体的算子(比如 map,filter,或者 window),而只是提炼出一个统一的【处理】(process)操作——它是所有转换算子的一个概括性的表…

动手学深度学习5 矩阵计算

矩阵计算--矩阵怎么求导数 1. 导数和微分2. 偏导数3. 梯度1. 向量-标量求导2. 向量-向量求导3. 拓展到矩阵 4. 链式法则5. 小结QA练习 课程安排: 视频:https://www.bilibili.com/video/BV1eZ4y1w7PY/?spm_id_fromautoNext&vd_sourceeb04c9a33e87ce…

【复现】SpringBlade SQL 注入漏洞_22

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 SpringBlade 是由一个商业级项目升级优化而来的SpringCloud微服务架构,采用Java8 API重构了业务代码,完全…

具有中国特色的普及工厂数字化转型的新路子

工业互联网浪潮来袭,你准备好了吗? 国家智能制造专委会委员、浙江省智能制造专家委员会毛光烈主任在“第七届中国工业大数据大会”上的演讲,《具有中国特色的普及工厂数字化转型的新路子》,阐述了关于工厂订单全流程业务数据体系运…

C++核心编程之通过类和对象的思想对文件进行操作

目录 ​​​​​​​一、文件操作 1. 文件类型分类: 2. 操作文件的三大类 二、文本文件 1.写文件 2.读文件 三、二进制文件 1.写二进制文件 2.读二进制文件 一、文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件可以将…

GPT APP的开发步骤

开发一个GPT(Generative Pre-trained Transformer) Store(存储)涉及到使用预训练的语言模型(例如GPT-3)来生成和管理内容。以下是一般的步骤,希望对大家有所帮助。北京木奇移动技术有限公司&…

2024年美国大学生数学建模思路 - 案例:异常检测

文章目录 赛题思路一、简介 -- 关于异常检测异常检测监督学习 二、异常检测算法2. 箱线图分析3. 基于距离/密度4. 基于划分思想 建模资料 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 一、简介 – 关于异常…

适合进阶学习的 机器学习 开源项目(可快速下载)

目录 开源项目合集[>> 开源的机器学习平台:mlflow/mlflow](https://gitcode.com/mlflow/mlflow)[>> 机器学习路线图:mrdbourke/machine-learning-roadmap](https://gitcode.com/mrdbourke/machine-learning-roadmap)[>> 机器学习理论和…

VsCode 常见的配置

转载:Visual Studio Code 常见的配置、常用好用插件以及【vsCode 开发相应项目推荐安装的插件】 - 知乎 (zhihu.com) 一、VsCode 常见的配置 1、取消更新 把插件的更新也一起取消了 2、设置编码为utf-8:默认就是了,不用设置了 3、设置常用的…

阿里云云原生弹性方案:用弹性解决集群资源利用率难题

作者:赫曦 随着上云的认知更加普遍,我们发现除了以往占大部分的互联网类型的客户,一些传统的企业,一些制造类的和工业型企业客户也都开始使用云原生的方式去做 IT 架构的转型,提高集群资源使用率也成为企业上云的一致…

【51单片机】数码管的静态与动态显示(含消影)

数码管在现实生活里是非常常见的设备,例如 这些数字的显示都是数码管的应用。 目录 静态数码管:器件介绍:数码管的使用:译码器的使用:缓冲器: 实现原理:完整代码: 动态数码管&#…

Linux Shell脚本入门

目录 介绍 编写格式与执行方式 Shell脚本文件编写规范 脚本文件后缀名规范 首行格式规范 注释格式 shell脚本HelloWord入门案例 需求 效果 实现步骤 脚本文件的常用执行三种方式 介绍 3种方式的区别 小结 多命令处理 Shell变量 环境变量 目标 Shell变量的介绍 变量类型 系统环境…

Java 方法中参数类型后写了三个点?什么意思?

1、...代表什么意思? 2、如何使用 3、注意事项 4、两个list,一个新的,一个旧的,旧列表中可能有新列表中存在的数据,也可能存在新列表中不存在的数据(注:新旧列表中都不存在重复元素)…

【数据结构】堆:堆的构建,堆的向上调整算法,堆的向下调整算法、堆排序

目录 一、堆的定义 1、堆的定义: 2、根节点与其左、右孩子间的联系 二、堆的创建 1、堆的向下调整算法 2、堆的向上调整算法 三、堆排序 一、堆的定义 1、堆的定义: 堆可以被看作是一棵完全二叉树的数组对象。即在存储结构上是数组&#xff0c…

2024 年 10 款最佳 Windows 免费分区管理器软件

买了一台现成的全新电脑,出于多种原因希望对硬盘进行分区,例如,为了更好地组织文件。我们整理了一份最佳分区软件列表,可以帮助您轻松完成这项任务。 适用于 Windows 11/10/8.1/8/7 的最佳 10 个磁盘分区工具 1.奇客分区大师 兼容…

vue3自定义按钮点击变颜色(切换)

实现效果图&#xff1a; 默认选中第一个按钮&#xff0c;未选中按钮为粉色&#xff0c;点击时颜色变为红色 利用动态类名&#xff0c;当定义isChange数值和下标index相同时&#xff0c;赋予act类名&#xff0c;实现变色效果 <template><view class"page"&g…

FPGA 多路分频器实验

1 概述 在 FPGA 中&#xff0c;时钟分频是经常用到的。本节课讲解 2 分频、3 分频、4 分频和 8 分频的 Verilog 实现并且学习 generate 语法功能的应。 2 程序设计思路 1&#xff09;整数倍分频&#xff0c;为 2、4、8&#xff0c;这种 2^n 次方倍数倍数关系的…

Spring Security 中 Authentication和Authorization的区别

Authentication Spring Security提供了全面的认证支持。认证是用来验证试图访问特定资源的用户身份的方式。验证用户的常见方式是要求用户输入用户名和密码。一旦认证完成&#xff0c;我们就知道了用户的身份并且可以进行授权。 Spring Security内置支持对用户进行认证。 简…

el-date-picker如果超过限制跨度则提示

需求&#xff1a;实现日期时间选择组件跨度如果超过限制天数&#xff0c;点击查询则提示超过限制时间 封装一个方法&#xff0c;传入开始和结束时间以及限制天数&#xff0c;如果超过则返回false //计算时间跨度是否超过限制天数isTimeSpanWithinLimit(startTime, endTime, li…