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

news/2024/11/25 4:39:52/

目录:导读

前言

01.ActionChains 类常用方法

02.ActionChains 类所有方法

03.ActionChains 使用步骤

04.实战

05.总结


前言

我们在做 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
    切换 iframe
  2. 定位到绑定鼠标事件的 div
  3. 将鼠标移动到 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 类中的方法可以使用链式调用,大家思考思考自己拓展吧(其实很简单)。


http://www.ppmy.cn/news/43229.html

相关文章

CDH 之 Kerberos 安全认证和 Sentry 权限控制管理(一)

一、Kerberos 和 Sentry 概述 1.1 什么是 Kerberos Kerberos是一种计算机网络授权协议,用来在非安全网络中,对个人通信以安全的手段进行身份认证。这个词又指麻省理工学院为这个协议开发的一套计算机软件。软件设计上采用客户端/服务器结构,…

信息系统项目管理师-项目成本管理

1.过程 1.1 规划成本管理 确定如何估算、预算、管理、监督和控制项目成本的过程。 1.2 估算成本 对完成项目工作所需资源成本近似估算的过程。 1.3 制定预算 汇总所有单个活动或工作包的估算成本,建立一个经批准的成本基准的过程。 1.4 控制成本 监督项目状态&#…

FlowForge 使用教程 团队资源管理

前言 本篇文章结合FF的操作来给大家解释一下,FF在团队管理上都与那些资源可以操作。 团队创建 使用超管第一次登录FF平台,默认什么资源都没有,你只能先去创建一个团队才能继续往下操作。 在FF平台上,团队就代表一个租户,也是一种资源隔离的手段。 创建团队可以通过右上…

解决Android Studio测试报错Could not find method test() for arguments

文章目录问题描述解决办法笔者报错时的运行环境: Android Studio Electric Eel | 2022.1.1 Patch 2 Gradle 8.0.1 JDK 17 JUnit 5.9.2 或 TestNG 7.7.1 单元测试 问题描述 笔者在 Android Studio 界面内运行单元测试时,踩坑无数。 首先&#xff0…

一键构建分布式云原生平台

目录专栏导读一、分布式云原生平台1、应用无所不能2、运行无处不在3、服务千行白业二、分布式云原生平台关键要素1、统一应用管理2、统一流量自治3、统一数据管理4、统一运维三、多云多集群已经广泛应用四、分布式云的优势:1、避免厂商锁定2、满足合规化要求3、增强…

系统复杂度之【高可用】

接着,我们聊聊复杂度的第二个要求高可用。 参考维基百科,先来看看高可用的定义。 系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。 这个定义的关键在于“ 无中断”,但恰好难点也在“…

YC-A11(原创)基于springboot,vue网上商城

绪论 课题的开发背景 随着计算机和网络的快速发展,并且越来越普及,互联网日益成为人们收集信息常用渠道,电子商务开始流行,一种全新的理念不断形成并且快速发展,像国内电商巨头淘宝、京东、苏宁易购、唯品会等电商平台…

Vue.js 2.0 Render 函数

Vue.js 2.0 Render 函数基础 Vue 推荐使用在绝大多数情况下使用 template 来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力,这就是 render 函数,它比 template 更接近编译器。 让我们先深入一个使用 render 函数…