selenium 做 Web 自动化,鼠标当然也要自动化!

我们在做 Web 自动化的时候,有时候页面的元素不需要我们点击,值需要把鼠标移动上去就能展示各种信息。这个时候我们可以通过操作鼠标来实现,接下来我们来讲一下使用 selenium 做 Web 自动化的时候如何来操作鼠标。鼠标操作,我们可以使用 selenium 的 ActionChains 类来实现,我们先来认识一下这个类。

一、ActionChains 类常用方法

  • click_and_hold(on_element=None) :点击鼠标左键,不松开
  • context_click(on_element=None):点击鼠标右键
  • double_click(on_element=None):双击鼠标左键
  • drag_and_drop(source, target):拖拽到某个元素然后松开
  • move_by_offset(xoffset, yoffset):鼠标从当前位置移动到某个坐标
  • move_to_element(to_element) :鼠标移动到某个元素
  • release(on_element=None):在元素上释放按住的鼠标按钮
  • pause(seconds):暂停操作(秒)

二、ActionChains 类所有方法

  • perform(self)--执行鼠标操作方法
  • reset_actions()--清楚操作子令
  • click(on_element=None)--点击鼠标左键
  • click_and_hold(on_element=None):点击鼠标左键,不松开
  • context_click(on_element=None):点击鼠标右键
  • double_click(on_element=None):双击鼠标左键
  • drag_and_drop(source, target):拖拽到某个元素然后松开
  • drag_and_drop_by_offset(source, xoffset, yoffset) :拖拽到某个坐标然后松开
  • key_down(value, element=None):按下某个键盘上的
  • key_up(value, element=None) :松开某个
  • move_by_offset(xoffset, yoffset):鼠标从当前位置移动到某个坐标
  • move_to_element(to_element) :鼠标移动到某个元素
  • move_to_element_with_offset(to_element, xoffset, yoffset):移动到
  • 距某个元素(左上角坐标)多少距离的位置
  • pause(seconds):暂停操作(秒)
  • release(on_element=None):在元素上释放按住的鼠标按钮
  • send_keys(*keys_to_send):发送某个键到当前焦点的元素
  • send_keys_to_element(element, *keys_to_send) :发送某个键到指定元素

三、ActionChains 使用步骤

  1. 实例化:actions = ActionChains(driver)
  2. 调用鼠标操作方法:actions.move_to_element(menu)
  3. 执行鼠标操作方法:actions.perform()

四、实战

代码做的事情:

  1. 打开测试网页:https://www.runoob.com/try/try.php?filename=tryjs_events_mouseover
  2. 切换 iframe
  3. 定位到绑定鼠标事件的 div
  4. 将鼠标移动到 div 上触发事件(可以观察到 div 上字会发生变化)
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
driver = webdriver.Chrome(r"D:\chromeDriver\71\chromedriver71.exe")
driver.implicitly_wait(5)
driver.get(url="https://www.runoob.com/try/try.php?filename=tryjs_events_mouseover")
driver.maximize_window()
#切换iframe
driver.switch_to.frame(driver.find_element_by_xpath('//iframe[@id="iframeResult"]'))
#元素定位
ele = driver.find_element_by_xpath('//div[@onmouseover="mOver(this)"]')
#移动鼠标到元素上触发事件
actions = ActionChains(driver)
actions.move_to_element(ele)
actions.perform()
time.sleep(5)
driver.quit()

五、总结

  • ActionChains 类中其他方法使用方式都一样,大家有空可以试一下
  • ActionChains 类中有很多方法,但是常用的并不多,上面已经列出,掌握常用方法即可
  • 特别注意:ActionChains 的执行原理,当你调用 ActionChains 的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用 perform()方法时,队列中的时间会依次执行。
  • ActionChains 类中的方法可以使用链式调用,大家思考思考自己拓展吧(其实很简单)。
​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

接口自动化测试难点:数据库验证解决方案

接口自动化中的数据库验证:确保数据的一致性和准确性 接口自动化测试是现代软件开发中不可或缺的一环,而数据库验证则是确保接口返回数据与数据库中的数据一致性的重要步骤。本文将介绍接口自动化中的数据库验证的原理、步骤以及示例代码,帮…

Nodejs基础3之fs模块的文件重命名和移动、文件的删除、文件夹操作、查看资源状态、fs路径

Nodejs基础二 fs模块文件重命名和移动文件的重命名文件的移动同步重命名和移动 文件的删除使用unlink进行删除unlink异步删除unlinkSync同步删除 使用rm进行删除rm异步删除rmSync同步删除 文件夹操作创建文件夹递归创建文件夹 读取文件夹删除文件夹rmdir删除文件夹删除递归文件…

K8s-Pod资源(二)node调度策略、node亲和性、污点与容忍度

目录 node调度策略nodeName和nodeSelector 指定nodeName 指定nodeSelector node亲和性 node节点亲和性 硬亲和性 软亲和性 污点与容忍度 本文主要介绍了在pod中,与node相关的调度策略,亲和性,污点与容忍度等的内容 node调度策略node…

一文速学-selenium高阶性能优化技巧

一文速学-selenium高阶性能优化技巧 前言 最近写的挺多自动化办公的selenium程序没有做优化,执行效率不高,启动浏览器又慢但是又可能出现其他不可控的因素,总结来说虽然放心运行但是又没那么好用,项目是写完了最后还是需要优化结…

内部软件产品数据治理平台(流程设计里,选择触发事件报错)

内部软件产品数据治理平台(流程设计里,选择触发事件报错) 页面报错如下 通过查看dp后台日志发现缺少表字段,表名称(TL_EVENT_SHADOW),需要新增字段即可 PROJECT_ID varchar(200) DEFAULT NULL COMMENT ‘对象所属项目ID’, SPACE_ID varchar(20) DEFAULT ‘0’ C…

黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(5)登录认证

指路(1)(2)(3)(4)👇 黑马程序员JavaWeb开发|案例:tlias智能学习辅助系统(1)准备工作、部门管理_tlias智能学习辅助系统的需求分析-CS…

外汇天眼:模拟大赛报名人数突破一万大关

🔥🔥🔥 第二届模拟交易世界杯模拟交易赛区:截止到2024年1月15日上午9:58:06 报名人数已突破10000大关,累计模拟交易人数突破6800,日均模拟交易人数达1100,累计模拟交易金额超650亿,…

YOLOV7剪枝流程

YOLOV7剪枝流程 1、训练 1)划分数据集进行训练前的准备,按正常的划分流程即可 2)修改train.py文件 第一次处在参数列表里添加剪枝的参数,正常训练时设置为False,剪枝后微调时设置为True parser.add_argument(--pr…

HCIP的静态路由复习

VRP设置用户名密码登录 [R1]aaa [R1-aaa]local-user TMG password cipher huawei #创建一个名TMG的用户,密码huawei Info: Add a new user.[R1-aaa]local-user TMG privilege level 15 #设置权限 [R1-aaa]local-user TMG service-type terminal …

CentOS离线安装MongoDB

目录 1、下载 2、上传并解压 3、创建目录 4、新建配置文件 5、启动 6、验证 7、停止服务 7.1 快速停止 7.2 标准的关闭方法 1、下载 下载MongoDB对应的压缩包,本次使用的是4.0.10版本,点击下载 2、上传并解压 把压缩包上传到服务器&#xff0c…

人大金仓参与起草《数据库运维管理能力成熟度模型》标准

近日,由中国信息通信研究院、中国移动通信集团有限公司、人大金仓等单位参与起草的《数据库运维管理能力成熟度模型》标准正式发布。本标准适用于金融、电信、互联网、能源等重点行业对内部数据库运维管理能力进行全面综合的评价。 数据库作为基础软件的核心组成部分…

2024年初会报名照片要求(必须白底哦)

24初级会计报名照片要求 近期彩色标准1寸、(白色背景), jpg格式,大于10KB ,像素>295*413. 初级会计考试报名照片要求为本人近期正面、免冠、清晰完整的证件电子照。 初级会计报名照片应显示报考人员双肩、双耳、双眉,不得佩戴首饰&#xf…

Android aar包集成与报错

Android Studio引用AAR的方式,分为gradle7.0之前与7.0之后 一、集成步骤 方法一: 1.将对应的xxx.aar包复制到项目的libs目录下(xxx代表需要引入的aar包名称) 2.然后在模块的build.gradle文件中配置implementation files(libs/lib…

geopandas 笔记:plot 的scheme

transbigdata 笔记:官方文档案例1(出租车GPS数据处理)-CSDN博客 3.3.1 节的内容的拓展,这里主要是比较各个scheme的效果 主代码为:修改的就是第二行scheme的内容 plt.figure(1,(16, 6), dpi300) schemebox_plot #图…

在线协作白板WBO本地部署启动并结合内网穿透实现远程协同办公

文章目录 推荐前言1. 部署WBO白板2. 本地访问WBO白板3. Linux 安装cpolar4. 配置WBO公网访问地址5. 公网远程访问WBO白板6. 固定WBO白板公网地址 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击…

Overleaf IEEE白嫖即将失效!

之前白嫖Overleaf用IEEE的,最长只能到一月份了!(官方回复) 翻译一下: IEEE不支持这种Collaboratec白嫖了已经白嫖的,到2024年1月份过期没有白嫖的,已经无法获得了

大模型日报-20240115

即插即用,完美兼容:SD社区的图生视频插件I2V-Adapter来了 https://mp.weixin.qq.com/s/tlOWaMi0e6By__MUT414xA 图像到视频生成(I2V)任务旨在将静态图像转化为动态视频,这是计算机视觉领域的一大挑战。其难点在于从单…

opencv-py-基础操作

文章目录 阈值分割灰度图效果 二值化效果 二值化取反效果 截取效果 TOZERO效果 TOZERO取反效果 滤波均值滤波高斯滤波中值滤波 图像拼接简单的横向和纵向拼接效果(三幅图片分别是均值滤波,高斯滤波,中值滤波) 腐蚀与膨胀 阈值分割…

软件测试|使用holidays模块处理节假日

前言 在Python中,有一个名为 holidays 的模块,它可以帮助你轻松地处理节假日信息。该模块提供了一种方便的方式来确定特定日期是否是一个节假日,同时还支持不同国家和地区的节假日计算。本文将详细介绍如何使用 holidays 模块,包…