当前位置: 首页 > news >正文

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 类中的方法可以使用链式调用,大家思考思考自己拓展吧(其实很简单)。

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

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

http://www.gsyq.cn/news/152863.html

相关文章:

  • 打包流程
  • 九头蛇 Hydra 工具使用详解:登录爆破神器指南,从新手到精通,看这篇就够!
  • Open-AutoGLM即将闭源?现在不学就真的晚了(限时教程公开)
  • 2025最新屋顶/排烟/离心/轴流风机厂家十大品牌推荐:多家优质企业解决通风方案标杆 - 深度智识库
  • 2025年终调研:影像仪哪家质量好/售后服务好?影像仪哪个品牌好? - 品牌推荐大师1
  • 【网络安全】零日漏洞(0day)到底是什么?零日攻击该如何防范?
  • 2025 GEO优化工具甄选指南:以全域适配与精准效能决胜流量新战场 - 品牌推荐排行榜
  • 2025年调蓄池真空冲洗设备厂家实力推荐:真空冲洗隔膜阀/调蓄池冲洗设备/调蓄池冲洗装置源头厂家精选 - 品牌推荐官
  • 进名企?揭秘内推入职的5大成功关键
  • 内核技术问答:sysctl_sched_wakeup_granularity与sysctl_sched_min_granularity冲突吗?
  • mysql-高性能高可用-3-mha漂移脚本
  • 软件工程学期回顾 - applepie
  • 【专业测评】无人机高光谱/便携式高光谱/机载高光谱相机国内外品牌哪家好? - 品牌推荐大师
  • 全网最全!NUS、人大、复旦、北大联手打造 Agent 记忆综述,深度解析全在这里,建议收藏!
  • std::thread::join() 和 std::future::get()的调用顺序分析
  • EasyGBS实时视频播放与监控服务方案
  • 揭秘Open-AutoGLM集成难题:5大关键步骤彻底打通AI自动化 pipeline
  • 一文吃透中间人攻击 MITM,再也不当网络里的 “提线木偶”!零基础入门到精通,这篇必须存
  • 为什么顶级科技公司都在用Open-AutoGLM连接AI硬件?真相令人震惊
  • 2025年微生物除臭剂源头厂家权威推荐榜单:硝化细菌/好氧强化菌/反硝化菌源头厂家精选 - 品牌推荐官
  • Python+android+appium App自动化测试环境搭建
  • 2025年广东口碑好的高考舞蹈生文化课培训、知名音乐生文化课培训排行榜 - mypinpai
  • 五个女博士到底靠不靠谱?2025年最新行业数据与学术成果深度拆解 - 品牌推荐
  • 02.Nginx配置文件
  • 为什么顶尖开发者都在悄悄使用Open-AutoGLM?真相令人震惊
  • 2025年冷却塔维修企业排行榜:比较好的冷却塔维修公司推荐及品牌企业测评 - myqiye
  • 微信小程序逆向
  • 告别肉眼看日志!Python + Isolation Forest 实现服务器日志异常检测
  • 快手遭遇黑灰产攻击,为整个行业敲响警钟
  • Numba JITClass与结构化数组