前言

我们在做 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 上字会发生变化)
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()

05.总结

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

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

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

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

下面是测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

学会了selenium 模拟鼠标操作,你就可以偷懒点点点了相关推荐

  1. selenium 模拟鼠标操作

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

  2. Python爬虫(4)-Selenium模拟鼠标操作

    在Selenium4.2以后的版本里面鼠标的操作方法都封装在了ActionChains中需要时直接取即可. 1.鼠标双击 使用方法就是调用ActionChains然后传入你需要点击的按钮的位置即可 A ...

  3. selenium模拟鼠标和键盘操作的基本方法

    前言 前面已经把环境搭建好了,这从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是 ...

  4. selenium之鼠标操作详解

    前言 人类频繁的用手操作鼠标和键盘,为了解决这个问题,selenium工具为我们提供了一个类来处理这些事件- Actionchains ,该类可以完成鼠标移动,鼠标点击事件.键盘输入.内容菜单交互等交 ...

  5. selenium中鼠标操作:ActionChains类

    一.ActionChains类的介绍 ActionChains模拟鼠标操作的常用方法.使用click()方法可以进行鼠标的单击操作,但是鼠标操作还包括:双击.右击.悬停.鼠标拖动等功能,所以,Acti ...

  6. 真就释放双手?C#模拟鼠标操作

    前言 最近玩贪玩蓝月,老是让我呆呆站着领在线礼包?我可能每过几分钟就领一下礼包吗?害,要是有人能帮我一会点一下鼠标就好了- -于是,奇怪的知识又增加了- - 页面设计 注:因为控件可能有点多,代码中也 ...

  7. 使用python pynput完全模拟鼠标操作

    人生苦短,我用Python! 总是有些事情需要重复性机械性的操作,想要设计代码去做,有些程序又不给接口,这时最简单的方法就是,模拟鼠标操作! 除了不能生孩子,其他都能做的python!  一搜 果然有 ...

  8. pywinauto客户端自动化---模拟鼠标操作

    无论什么自动化,都避免不了模拟一些鼠标操作,pywinauto模块中也存在模拟鼠标操作方法 mouse mouse是pywinauto一个模拟鼠标的方法库,可以帮助模拟鼠标操作,直接输入坐标就可以了. ...

  9. 利用Python模拟鼠标操作,一键将GIF文件载入CSDN的Markdown编辑器

    简 介: 讨论了在csdn的Markdown编译器中自动载入GIF文件的方法.使用了Python中的pyautogui软件包,可以通过Python的小程序实现一键将GIF文件载入CSDN的Markdo ...

最新文章

  1. 标准自编码器(TensorFlow实现)
  2. linux 音频文件长度,Linux下压缩音频文件
  3. 03 | 事务隔离:为什么你改了我还看不见
  4. 使用ConfigModule.withConfig替换SAP Spartacus标准Component
  5. nssl1458-HR 的疑惑【枚举】
  6. 在 Mac 上使用“网络实用工具”
  7. MySQL8.0二进制免编译部署过程详解(二)
  8. Geodesic Distance(测地距离)
  9. python3贴吧_python3 百度贴吧 自动签到
  10. MySQL理解索引、添加索引的原则
  11. 电脑重装系统时找不到硬盘怎么办
  12. Maven历史版本下载
  13. ZZULIOJ:1156: 单数变复数
  14. 虚拟现实(VR)、增强现实(AR)、混合现实(MR)
  15. lowB三人组算法-冒泡排序-选择排序-插入排序
  16. 设计模式-工厂模式的3中不同实现[JAVA]
  17. 清除U盘内所占的隐藏空间(U盘容量突然变小了)
  18. CentOS7 安装cellranger-4.0.0
  19. 国外免费杀毒软件AVG、Avast、小红伞体验
  20. protoc 命令参数

热门文章

  1. ssm游文化推广系统答辩PPT模板
  2. SSH农产品销售系统设计与实现答辩PPT免费下载
  3. kali 创建php可执行文件_利用树莓派在kali环境下搭建Web环境(Apache+Php7.3+Mysql)...
  4. 相机视场角和焦距_相机参数一览表
  5. java中的技术_Java中的四个核心技术思想
  6. 三维家可以导入别人的方案吗_三维家精准赋能月兔家居打通前后端一体化,以时间匠空间!...
  7. Qt中利用定时器QTimer实时显示当前日期和时间
  8. C++11标准之NULL与nullptr比较
  9. 如何使用 Buildah 构建容器镜像
  10. JavaScript数组归并方法reduce