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

鼠标操作,我们可以使用selenium的ActionChains类来实现,我们先来认识一下这个类。

一、ActionChains类常用方法
  1. click_and_hold(on_element=None) :点击鼠标左键,不松开
  2. context_click(on_element=None):点击鼠标右键
  3. double_click(on_element=None):双击鼠标左键
  4. drag_and_drop(source, target):拖拽到某个元素然后松开
  5. move_by_offset(xoffset, yoffset):鼠标从当前位置移动到某个坐标
  6. move_to_element(to_element) :鼠标移动到某个元素
  7. release(on_element=None):在元素上释放按住的鼠标按钮
  8. pause(seconds):暂停操作(秒)
二、ActionChains类所有方法
  1. perform(self)–执行鼠标操作方法
  2. reset_actions()–清楚操作子令
  3. click(on_element=None)–点击鼠标左键
  4. click_and_hold(on_element=None):点击鼠标左键,不松开
  5. context_click(on_element=None):点击鼠标右键
  6. double_click(on_element=None):双击鼠标左键
  7. drag_and_drop(source, target):拖拽到某个元素然后松开
  8. drag_and_drop_by_offset(source, xoffset, yoffset) :拖拽到某个坐标然后松开
  9. key_down(value, element=None):按下某个键盘上的键
    10、key_up(value, element=None) :松开某个键
    11、move_by_offset(xoffset, yoffset):鼠标从当前位置移动到某个坐标
    12、move_to_element(to_element) :鼠标移动到某个元素
    13、move_to_element_with_offset(to_element, xoffset, yoffset):移动到距某个元素(左上角坐标)多少距离的位置
    14、pause(seconds):暂停操作(秒)
    15、release(on_element=None):在元素上释放按住的鼠标按钮
    16、send_keys(*keys_to_send):发送某个键到当前焦点的元素
    17、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()
六、总结
  1. ActionChains类中其他方法使用方式都一样,大家有空可以试一下
  2. ActionChains类中有很多方法,但是常用的并不多,上面已经列出,掌握常用方法即可
  3. 特别注意:ActionChains的执行原理,当你调用ActionChains的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用perform()方法时,队列中的时间会依次执行。
  4. ActionChains类中的方法可以使用链式调用,大家思考思考自己拓展吧(其实很简单)。

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. 利用Python模拟鼠标操作,一键将GIF文件载入CSDN的Markdown编辑器

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

  7. C# SendInput 实现模拟鼠标操作

    刚刚开始学习C#,想自己做一个网页游戏的挂.游戏里面有收钱的动作,一个建筑物一个建筑物的点,很累啊.于是想用C#模拟鼠标操作替我收钱,想着学习这个对以后的测试工作也有帮助,于是有了动力.学习过程也是曲 ...

  8. C#模拟鼠标操作以及键盘输入

    模拟鼠标以及键盘基本输入源代码 using System; using System.Collections.Generic; using System.Linq; using System.Runt ...

  9. 【向重复工作说不】c#之模拟鼠标操作

    一.写在前面 作为一个人力资源工作者,会经常遇到填表.报表的事务,其实有时候就是重复再重复的点击鼠标工作,特别是遇到一些复杂的客户端程序.网页程序,诸如用友客户端.社保管理系统等等,就尤其让人头疼.正 ...

最新文章

  1. 风变编程python小课课件_风变编程Python小课最近很火,大家学完感受如何?
  2. java用集合类求数组交并集_java 并集 数组/集合 有重复元素需 保留(急)
  3. java反射机制原理详解_java反射机制的详细讲解
  4. Redis中的zset 有序集合
  5. 【附可运行代码】剑指 Offer 12. 矩阵中的路径
  6. Vagrant+VirtualBox版本的坑
  7. linux 无线网卡休眠,无线网卡在Linux下活起来
  8. c++11 string u8_深入理解C++11:C++11新
  9. jsf集成spring_JSF – PrimeFaces和Hibernate集成项目
  10. 英语作文中常见的连接词
  11. 数据模型的作用和数据模型的三个要素:
  12. 网络协议:透彻解析HTTP协议
  13. 删软件怎么用计算机管理员删除,win10卸载软件需要管理员权限,卸载软件没有管理员权限...
  14. 记录一下向npmjs上发布包遇到的坑
  15. 格兰杰因果( Granger causality test)在神经科学中脑区功能连接上的应用
  16. Dynamic Few-Shot Visual Learning without Forgetting||论文阅读
  17. U盘在别人电脑上正常显示,插在自己电脑读不出来(只显示CD驱动器)
  18. gitlab ip变更runner拉取代码失败、shell启动springboot项目启动起来。
  19. VB 数据库交互(二)——经典五实例总结
  20. rip/eip/rbp/ebp

热门文章

  1. X-Forwarded-For详解、如何获取到客户端IP
  2. 长久佩戴舒适的蓝牙耳机有哪些?蓝牙耳机久戴不痛推荐
  3. 微信支付和微信认证的相关介绍
  4. 软件测试工作主要做什么
  5. linux正则和三剑客(grep,sek,awk)
  6. ZYNQ PS端模块读书笔记-XADC
  7. Hive SQL数据查询基础
  8. 64gU盘格式化操作后,再次打开显示32g,恢复如下
  9. python函数求导_python构建计算图1——简单实现自动求导
  10. 这群年轻人禁欲8年,成了日本最好的匠人! (程序员专注可以借鉴)