news 2026/4/23 14:13:57

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
selenium 做 Web 自动化,鼠标当然也要自动化!

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

01.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):暂停操作(秒)

02.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) :发送某个键到指定元素

03.ActionChains 使用步骤

  1. 实例化:actions = ActionChains(driver)

  2. 调用鼠标操作方法:actions.move_to_element(menu)

  3. 执行鼠标操作方法:actions.perform()

04.实战

代码做的事情:

  1. 打开测试网页:https://www.runoob.com/try/try.php?filename=tryjs_events_mouseover

  2. 切换 iframe

  3. 定位到绑定鼠标事件的 div

  4. 将鼠标移动到 div 上触发事件(可以观察到 div 上字会发生变化)

  1. import time

  2. from selenium import webdriver

  3. from selenium.webdriver import ActionChains

  4. driver = webdriver.Chrome(r"D:\chromeDriver\71\chromedriver71.exe")

  5. driver.implicitly_wait(5)

  6. driver.get(url="https://www.runoob.com/try/try.php?filename=tryjs_events_mouseover")

  7. driver.maximize_window()

  8. #切换iframe

  9. driver.switch_to.frame(driver.find_element_by_xpath('//iframe[@id="iframeResult"]'))

  10. #元素定位

  11. ele = driver.find_element_by_xpath('//div[@onmouseover="mOver(this)"]')

  12. #移动鼠标到元素上触发事件

  13. actions = ActionChains(driver)

  14. actions.move_to_element(ele)

  15. actions.perform()

  16. time.sleep(5)

  17. driver.quit()

05.总结

  • ActionChains 类中其他方法使用方式都一样,大家有空可以试一下

  • ActionChains 类中有很多方法,但是常用的并不多,上面已经列出,掌握常用方法即可

  • 特别注意:ActionChains 的执行原理,当你调用 ActionChains 的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用 perform()方法时,队列中的时间会依次执行。

  • ActionChains 类中的方法可以使用链式调用,大家思考思考自己拓展吧(其实很简单)。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:25:56

pytest-rerunfailures:优化测试稳定性的失败重试工具

笔者在执行自动化测试用例时,会发现有时候用例失败并非代码问题,而是由于服务正在发版,导致请求失败,从而降低了自动化用例的稳定性,最后还要花时间定位到底是自身case的原因还是业务逻辑问题,还是其他原因…

作者头像 李华
网站建设 2026/4/23 12:49:08

大模型Prompt设计的5层架构理论,让AI不再答非所问

文章系统介绍了大模型Prompt设计的5层架构理论,包括系统上下文、任务定义上下文、工作上下文、外部上下文和历史概要。强调好的Prompt不取决于文采,而取决于信息摆放位置正确。从工程角度解释了为什么采用5层结构而非其他层数,指出Context En…

作者头像 李华
网站建设 2026/4/20 22:58:29

露,大小鼠跑步机 大鼠实验跑台 小动物跑台 动物跑步机 小鼠实验跑台

动物跑台是针对小鼠、大鼠等小型啮齿类动物设计的标准化运动训练装置,能够实现训练强度的精准测定与控制,相较于传统游泳训练模式具备显著的量化优势。其可支撑体能评估、运动损伤、营养干预、药物筛选及生理病理机制等多类研究的开展。安徽正华生物&…

作者头像 李华
网站建设 2026/4/20 2:24:48

AI从业者必藏:LLM时代的事件抽取:从静态任务到系统级认知支架

文章探讨了在大语言模型(LLMs)时代事件抽取(EA)的新角色。尽管LLMs可直接生成结构化输出,但事件抽取作为"认知支架"仍具重要价值,为系统提供结构化约束、验证机制、中间表示和外部记忆功能。文章综述了事件抽取的任务定义、数据集、评估方法、…

作者头像 李华
网站建设 2026/4/23 13:00:52

【Open-AutoGLM沉思实战指南】:掌握AI自动化推理的5大核心技巧

第一章:Open-AutoGLM沉思的核心理念与架构解析Open-AutoGLM沉思是一个面向自动化自然语言理解与生成任务的开源框架,其设计目标是实现语言模型的自适应推理与上下文感知优化。该框架融合了图神经网络(GNN)与大语言模型&#xff08…

作者头像 李华
网站建设 2026/4/18 14:28:57

普通家庭必看:没钱没背景,我们留给孩子的终极财富是什么?

童话,你太拼了,那你是希望你的女儿以后长大了跟你一样去走创业这条路,还是根据自己的兴趣去自由发展,哪怕这个兴趣都很难养活自己? 我跟你讲,你提的这个问题,我真的还认真思考过。因为我是生的两…

作者头像 李华