selenium之鼠标操作

news2025/2/22 15:57:09

首先导入ActionChains类,该类可以完成鼠标移动,鼠标点击事件,键盘输入、内容菜单交互等交互行为。

from selenium.webdriver.common.action_chains import ActionChains

操作语法:

        第一步:初始化ActionChains类(动作链条):action = ActionChains(driver)

        第二步:找到要操作的元素:element = driver.find_element(by='xx', value='xx')

        第三步:调用鼠标操作方法:action.move_to_element(element)

        第四部:执行鼠标操作方法:action.perform()

在实际调用ActionChains类的方法时,不会立即执行鼠标操作,而是会将所有的操作顺序存放在一个队列里,最终调用perform()方法,队列中的操作会依次进行。

( ActionChains 类提供了对动作的链式操作,也就是可以生成一个操作的队列,将复杂的操作过程分解成单个操作,然后组合起来一次性执行)

(在 ActionChains 类中所有提供的鼠标事件方法,在调用的时候所有的行为都存储在 ActionChains 对象中,而 perform() 方法就是真正去执行所有的鼠标事件。)

常用方法:

1、点击鼠标左键----click(element)

action = ActionChains(driver)
element = driver.find_element('class name', 'hot-refresh-text')
action.click(element).perform()

简写为:

driver.find_element('class name', 'hot-refresh-text').click()

2、鼠标移动到元素上-------move_to_element(element)

执行操作:

ActionChains(driver).move_to_element(driver.find_element('id', 's-usersetting-top')).perform()
# 移动鼠标到元素上

3、点击鼠标左键,不松开----click_and_hold(element)

执行操作:

action = ActionChains(driver)
element = driver.find_element('class name', 'hot-refresh-text')
action.click_and_hold(element).perform()

 4、点击鼠标右键----context_click(element)

        对于点击鼠标右键,如果弹出的是浏览器默认的菜单,Selenium没有提供操作菜单选项的方法; 如果是自定义的右键菜单,则可以通过元素定位来操作菜单中的选项。

action = ActionChains(driver)
element = driver.find_element('xx', 'xx')
action.context_click(element).perform()

5、双击鼠标左键----double_click(element)

action = ActionChains(driver)
element = driver.find_element('xx', 'xx')
action.double_click(element).perform()

6、drag_and_drop(source, target) :拖拽到某个元素然后松开

        说明:模拟鼠标拖动动作,选定拖动源元素释放到目标元素后鼠标松开。

  • 初始化类:action = ActionChains(driver)
  • 源元素:source = driver.find_element(by='xx', value='xx')
  • 目标元素 :target = driver.find_element(by='xx', value='xx')
  • 调用方法 :action.drag_and_drop(source, target).perform()
action = ActionChains(driver)
source = driver.find_element('xx', 'xx')
target = driver.find_element('xx', 'xx')
action.drag_and_drop(source, target).perform()

7、执行鼠标操作-----perform()

其他方法:

1、清除已在队列中的鼠标操作命令----reset_actions()

2、拖拽到某个坐标后松开----drag_and_drop_by_offset(source, x, y) 

        源元素:source = driver.find_element(by='xx', value='xx')

3、按下某个键盘上的键----key_down(value, element)

4、松开某个键----key_down(value, element)

5、鼠标从当前位置,移动到某个坐标----move_by_offset(x, y)

6、鼠标移动到距离某个元素多少距离的位置----move_to_element_with_offset(element, x, y)

7、在元素上释放按住的鼠标按钮----release(element)

        说明:在某个元素位置松开鼠标左键,与 click_and_hold(element) 点击鼠标左键不松开结合使用。(如果有鼠标按下的操作,那么需要通过 release() 方法释放鼠标)

8、暂停操作-----pause(seconds)

        结合使用,比如:鼠标移动到某元素上悬停的时间。(暂停所有动作,相当于等待,用于链式操作过程中的等待)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/686074.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系列二、Maven下载安装配置

一、下载 链接:https://pan.baidu.com/s/1BvwLzAk9kRSP-daxSYe4Vw?pwdyyds 提取码:yyds 二、安装 第一步:下载安装包 第二步:解压至安装目录,例如 第三步:配置settings.xml(主要配置maven本…

Open ai 开发指南:gpt接口的第一个问答机器人demo

目录 内容 Python代码 C 代码 workspace 文件 BUILD文件 Java 代码 maven文件 执行效果 内容 基于openai接口实现循环gpt问答,并使用一个文件将问答内容进行记录。 Python代码 # -*- coding: utf-8 -*- import openai import time from pathlib import P…

100天精通Python(可视化篇)——第93天:Pyecharts绘制多种炫酷饼图参数说明+代码实战(百分比、环形、玫瑰、内嵌、多个子图饼图)

文章目录 专栏导读1. 基础饼图add函数简单案例改变颜色 2. 百分比饼图3. 环形饼图4. 玫瑰饼图5. 内嵌环图6. 多个饼图 专栏导读 🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整…

学习前端开发,能抛弃HTML和CSS吗?

前言 前端开发里面HTML和CSS是两个非常重要的核心技术,它们是构建网页和应用程序界面的基础。 HTML(超文本标记语言)是用于描述网页结构的标记语言,它定义了网页的内容、布局和元素。几乎所有的网页都使用HTML来组织和呈现内容&…

5.6.3 套接字

5.6.3 套接字 我们先以示例引入套接字的基本内容,我们知道在邮政通信的时候我们需要在信封上写明我们的收件地址,比如北京市海淀区双清路30号清华大学8444号某某某收,这其中我们需要一个物理地址“北京市海淀区双清路30号”,一个…

SpringBoot 如何使用 Ehcache 作为缓存?

SpringBoot 如何使用 Ehcache 作为缓存? 在现代的应用程序中,缓存是一个非常重要的概念。缓存可以帮助我们加速应用程序的响应时间,减少数据库或其他服务的负载,并提高系统的可扩展性和容错性。Spring Framework 提供了强大的缓存…

Linux下的su指令和last指令

文章目录 1 切换用户命令(su)2 查看本机的所有登录记录(last)3 退出当前登录账户(exit) 1 切换用户命令(su) su 命令可以切换成不同的用户身份,命令格式如下&#xff1a…

【文本SR:轻量级:残差注意力】

A Lightweight Deep Residual Attention Network for Single Image Super Resolution (一种用于单幅图像超分辨率的轻量级深度残差注意力网络) 本文将稀疏编码技术应用于基于学习的文本图像超分辨率(SR)中,以提高光学…

浅析做好数据安全风险评估的重要性

一、被忽略的数据安全风险 快速问答 你知道公司内有多少数据资产吗? 这些数据资产中哪些数据更为重要? 如何保护公司数据资产,防止数据泄露&劫持等事件发生? 如果你一问三不知的话,也许你该好好思考数据安全这项…

数据库系统概论(三)数据库设计、数据库恢复技术、并发控制

作者的话 前言:总结下知识点,自己偶尔看一看。 一、数据库设计 数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统 1.1概述 1.1.1数据库设计…

mysql 简单定位慢查询并分析SQL执行效率

实际的日常开发工作中可能会遇到某个新功能在测试时需要很久才返回结果,这时就应该分析是不是慢查询导致的,如果确实有慢查询,就需要来学习怎么找到慢查询和怎么分析 SQL 执行效率? 定位慢 SQL 有如下两种解决方案: …

ClickHouse-简单了解

文章目录 前言数据库引擎数据表引擎Log 系列Integration 系列Special 系列MergeTree 系列 ClickHouse 数据类型ClickHouse 常用的函数 前言 什么是 ClickHouse?简单来说它是一个高性能,面向列的SQL数据库管理系统(DBMS)&#xff…

嵌入式知识分享——GDB程序调试方法说明

前 言 本指导文档适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit Linux开发环境:Ubuntu 18.04.4 64bit 虚拟机:VMware15.1.0 U-Boot:U-Boot-2020.04 Kernel:Linux-5.4.70 Linux…

接口调用重放测试-业务安全测试实操(21)

接口调用重放测试。 接口调用遍历测试 接口调用重放测试 测试原理和方法 在短信、邮件调用业务或生成业务数据环节中,如短信验证码、邮件验证码、订单生成、评论提交等,对业务环节进行调用(重放) 测试。如果业务经过调用(重放) 后多次生成有效的业务或数据结果,可判断为存在…

PMP®证书增持 CSPM-2证书,哪里办理?

2023年6月起,持有PMP证书的朋友可以直接增持一个同等级证书CSPM-2,不用重新考试,不用重新学习,原PMP证书不影响正常使用,相当于多了一个国标项目管理领域的证书。 第一步准备资料 1、填写能力评价表 2、提供2张2寸蓝底…

在 Jetson Nano 上安装 ncnn 深度学习框架。

Install ncnn deep learning framework on a Jetson Nano. Introduction.RTTI.CMake 3.18.4.Dependencies.Benchmark.Introduction. 本页面将指导您在 Jetson Nano 上安装腾讯的 ncnn 框架。由于 ncnn 框架面向移动设备(例如 Android 手机),因此它不支持 CUDA。然而,大多数…

考虑储能的电价套利收益模型研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

C语言笔记-1 编译过程字节数

文章目录 C 基础语法注意 C 其他知识点编译过程编译器数据模型区别32/64位机器中,各数据类型所占位数assert() 断言(宏)用法总结与注意事项 C 基础语法 注意 if(a表达式) 判断的就是a的值,而不是判断这个赋值操作的成功与否。 查…

项目经理告诉你,项目管理的基本原则

张伟初升为项目经理,正面临着职业生涯中的挑战。他意识到项目经理的责任是复杂而艰巨的,因此在工作中经常犯错。他发现自己的表达不够清晰,思维混乱;花费大量时间制作的文字记录重点不突出,缺乏逻辑。这些问题破坏了他…

韶音open fit开放式耳机怎么样?和南卡OE Pro相比哪个值得入手的呢?

最近南卡新上线了一款南卡OE Pro,官方宣称佩戴上0压无感,是音质体验最好的耳机,究竟有没有这么好用呢?正好我手头上也有了南卡OE Pro,试用了几天,那么下面我就来给大家对比一下耳机圈内这两款热门的开放式耳…