Selenium通过ActionBuilder模拟鼠标操作直接移动到指定坐标的注意事项

在目前(2024-09-18)得Selenium官方手册中,模拟鼠标操作基本上都是通过ActionChains完成的,唯独有一动作,是通过ActionBuilder完成的。

而前者ActionChains,主要是通过offset,也就是坐标偏移量来实现的。看文档,使用它基本需要一个找一个元素作为参考,才能执行;而笔者想通过默认坐标来(左上角(0, 0))进行位置移动,自然而然想到了后者ActionBuilder。

看手册的时候,发现ActionBuilder的示例相对ActionChains有些不同,第一感觉是繁琐一些,示例代码如下:

    action = ActionBuilder(driver)action.pointer_action.move_to_location(8, 0)action.perform()

实际使用的过程中,报了好几次错误,始才发现确实要注意几个区别。因为花了点点儿的时间,所以特意总结出来,分享给可能同样会遇到的朋友。

1、要使用首先得引入对应的包,代码如下:

from selenium.webdriver.common.actions.action_builder import ActionBuilder

可以看出,和ActionChains的包也不相同。笔者开始搜索的时候,出来的有些结果告知不需要单独的包,明显是错误的答案。有遇到的朋友特别注意下。

ActionChains的包引入也粘到下面,方便对比观看:

from selenium.webdriver.common.action_chains import ActionChains

2、必须按照示例那样分开写才行,不能像ActionChains一样,使用一长串的“.”最后perform()。

笔者根据报错提示,得知两点:

一、‘PointerActions’ object has no attribute ‘perform’,意思就是示例第二句代码,pointer_action其实是会使用PointerActions这个对象,而这个对象没有perform()方法;

在这里插入图片描述

二、‘ActionBuilder’ object has no attribute ‘click’,意思就是ActionBuilder对象没有click()方法。

在这里插入图片描述
得知这几点,就明白为什么示例会那么写了。。

而如果通过ActionBuilder将鼠标移到指定位置后,想要进行点击操作,那么还得再使用ActionChains的click()方法。多一行的代码。也就是整体代码如下:

action = ActionBuilder(driver)
action.pointer_action.move_to_location(95, 65)
action.perform()
ActionChains(driver).move_by_offset(0, 0).click().perform()

完毕。

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

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

相关文章

RK3568笔记五十九:FastSAM部署

若该文为原创文章,转载请注明原文出处。 记录FastSAM训练到部署全过程,转换模型和yolov8一样。 一、介绍 Fast Segment Anything Model (FastSAM) 是一种基于 CNN 的新型实时解决方案,可用于 Segment Anything 任务。该任务旨在根据各种可能的用户交互提示分割图像中的任何…

AT24CXX系列eeprom的相关知识总结

常用的eeprom存储器件有很多容量类型,AT系列的eeprom有at24c01,at24c02…at24c1024等。我们来做一个总结。 1.常见的型号含义 at24c01:表示1kbit(128BYTE*8) at24c02:表示2kbit(256BYTE*8) . .…

pybind11 学习笔记

pybind11 学习笔记 0. 一个例子1. 官方文档1.1 Installing the Library1.1.1 Include as A Submodule1.1.2 Include with PyPI1.1.3 Include with Conda-forge 1.2 First Steps1.2.1 Separate Files1.2.2 PYBIND11_MODULE() 宏1.2.3 example.cpython-38-x86_64-linux-gnu.so 的…

二百六十四、Java——Java采集Kafka主题A的JSON数据,解析成一条条数据,然后写入Kafka主题B中

一、目的 由于Hive是单机环境&#xff0c;因此庞大的原始JSON数据在Hive中解析的话就太慢了&#xff0c;必须放在Hive之前解析成一个个字段、一条条CSV数据 二、IDEA创建SpringBoot项目 三、项目中各个文件 3.1 pom.xml <?xml version"1.0" encoding"UTF…

java: 警告: 源发行版 17 需要目标发行版 17(100% 解决)

1. 问题说明 Idea启动Springboot服务报错&#xff1a;java: 警告: 源发行版 17 需要目标发行版 17 2. 解决方案 Project Structure指定jdk版本为我们当前使用的版本&#xff1b; Java Compiler指定jdk为我们当前使用的版本&#xff1b; Invalidate Caches重启Idea。 如果还…

小商品市场配电系统安全用电解决方案

1.概述 随着市场经济的快速发展和人民生活水平的不断提高,全国各地相继建起了大批大型小商品批发市场,此类市场以其商品种类繁多、价格实惠、停车方便等特点吸引了大量的顾客,成为人们日常光顾的重要场所,地方便了广大人民群众的日常生活。 小商品市场集商品销售和短时货物储…

如何利用生成式AI创建图像和可视化效果

每个小型出版商在创建博客文章或新闻文章的过程中&#xff0c;都有一个恐慌时刻&#xff1a; “我用什么做我的特色图片&#xff1f;” 广告公司和媒体公司都有创意总监、摄影师和艺术家随时为他们创作图片。但我们其他人怎么办呢&#xff1f; 我们中的一些人会不顾更好的判…

数据中心扩展之路:创新的数据中心布线解决方案

在不断发展的数据管理领域中&#xff0c;现代技术的迅猛发展既带来了机遇&#xff0c;也带来了挑战&#xff0c;尤其是对不断扩展的数据中心而言。随着这些基础设施的快速发展和转型&#xff0c;对高效可靠的数据中心布线解决方案的需求日益增长。本文将探讨飞速&#xff08;FS…

redis常见类型设置、获取键值的基础命令

redis常见类型设置、获取键值的基础命令 获取键值的数据类型 命令&#xff1a;TYPE keyname 常见数据类型设置、获取键值的基本命令 string类型 置键值&#xff1a;set keyname valuename获取键值&#xff1a;get keyname删除&#xff1a; del keyname list类型 从左边向列表…

关于在Qlabel遮罩方面的踩坑实录

先看目标效果&#xff1a; 想要实现封面图标的遮罩效果&#xff0c;有两个思路&#xff1a; 一、在鼠标移动到这个item上面时&#xff0c;重新绘制pixmap 例如以下代码&#xff1a; #include <QApplication> #include <QWidget> #include <QPixmap> #incl…

马尔科夫蒙特卡洛_吉布斯抽样算法(Markov Chain Monte Carlo(MCMC)_Gibbs Sampling)

定义 输入:目标概率分布的密度函数 p ( x ) p(x) p(x),函数 f ( x ) f(x) f(x) 输出: p ( x ) p(x) p(x)的随机样本 x m 1 , x m 2 , ⋯ , x n x_{m1},x_{m2},\cdots,x_n xm1​,xm2​,⋯,xn​,函数样本均值 f m n f_{mn} fmn​; 参数:收敛步数 m m m,迭代步数 n n n。 (1)初…

camtasia2024绿色免费安装包win+mac下载含2024最新激活密钥

Hey, hey, hey&#xff01;亲爱的各位小伙伴&#xff0c;今天我要给大家带来的是Camtasia2024中文版本&#xff0c;这款软件简直是视频制作爱好者的福音啊&#xff01; camtasia2024绿色免费安装包winmac下载&#xff0c;点击链接即可保存。 先说说这个版本新加的功能吧&#…

小微金融企业系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;贷款信息管理&#xff0c;贷款申请管理&#xff0c;贷款种类管理&#xff0c;代办项目管理&#xff0c;项目分类管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;代办项…

如何做好网站建设,多个维度解析一下

网站建设是一个复杂的过程&#xff0c;涉及多个方面的考虑。以下是一些关键步骤和最佳实践&#xff0c;帮助你做好网站建设&#xff1a; 1. 明确目标与定位 确定网站目标&#xff1a;明确你的网站是用于品牌宣传、产品销售、信息分享还是其他目的。分析受众群体&#xff1a;了…

LeetCode_sql_day27(1225.报告系统状态的连续信息)

目录 描述&#xff1a; 1225.报告系统状态的连续信息 数据准备&#xff1a; 分析&#xff1a; 代码&#xff1a; 总结&#xff1a; 描述&#xff1a; 1225.报告系统状态的连续信息 表&#xff1a;Failed ----------------------- | Column Name | Type | ----------…

机器狗与无人机空地协调技术分析

随着科技的飞速发展&#xff0c;机器狗与无人机作为智能机器人领域的杰出代表&#xff0c;正逐步在军事侦察、灾害救援、环境监测、农业植保等多个领域展现出巨大的应用潜力。本文旨在深入探讨机器狗与无人机之间的空地协调技术&#xff0c;分析其在复杂环境中的协同作业机制、…

neo4j安装启动教程+对应的jdk配置

参考这位博主的视频教程&#xff1a;neo4j社区windows版下载 一、官网下载neo4j的安装包 &#xff08;1&#xff09;官网下载页面 &#xff08;2&#xff09;上一步 【download】之后&#xff0c;会自动下载&#xff0c;如果没有&#xff0c;点击【here】 这里可以看到一行字…

TypeScript —枚举的应用

枚举的关键字&#xff1a;enum 语法&#xff1a;enum 枚举名{选项} enum Sex{boy男,girl女 } 如何使用枚举中的属性 enum Sex{boy男,girl女 }function a2(sex:Sex){console.log(张三的性别是:${sex}) } a2(Sex.boy) 运行结果&#xff1a; 枚举的作用 1.提高代码可读性&a…

fmql之ubuntu联网

需求&#xff1a;fmql搭载linux&#xff0c;并且可以远程访问。 连路由器 板卡通过网线与路由器连接&#xff0c;ip设置成同段&#xff0c;可以ping通&#xff1a; 但是ping不通baidu&#xff08;如果路由器没有网/流量的话&#xff0c;就无法上网&#xff09; ZYNQ7020通过网…

基于vue框架的宠物托管系统设计与实现is203(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,宠物种类,商家,咨询商家,用户宠物,宠物托管,宠物状况,宠物用品,用品分类,商家公告,结束托管,账单信息,延长托管 开题报告内容 基于Vue框架的宠物托管系统设计与实现开题报告 一、引言 随着现代生活节奏的加快&#xff0c;越来越…