【Puppeteer】‘left‘ is already pressed, ‘${button}‘ is already pressed 的解决办法

2024-09-06 09:28

本文主要是介绍【Puppeteer】‘left‘ is already pressed, ‘${button}‘ is already pressed 的解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

解决过程如下

这是我原来的代码,不管我怎么修改,都一直会出现 'left' is already pressed 这个错误

找了很多资料 搜了 很多网站都 找不到解决办法

async function dragAndDrop(page, canvasSelector, startX, startY, endX, endY) {const startCoordinates = await getAbsoluteCoordinates(page, canvasSelector, startX, startY);const endCoordinates = await getAbsoluteCoordinates(page, canvasSelector, endX, endY);// 移动到起始点并按下鼠标await page.mouse.move(startCoordinates.x, startCoordinates.y);await page.mouse.down();// 拖动到目标点await page.mouse.move(endCoordinates.x, endCoordinates.y);// 松开鼠标按钮await page.mouse.up();
}

后来跟 GPT 问答了10个来回,终于得到了 AI 的灵感提示,找到了解决办法

async function dragAndDrop(page, canvasSelector, startX, startY, endX, endY) {// 获取起始和结束点的绝对坐标const startCoordinates = await getAbsoluteCoordinates(page, canvasSelector, startX, startY);const endCoordinates = await getAbsoluteCoordinates(page, canvasSelector, endX, endY);// 移动到起始位置await page.mouse.move(startCoordinates.x, startCoordinates.y);await new Promise(resolve => setTimeout(resolve, 100)); // 等待 100 毫秒// 确保鼠标按钮未被按下,尝试释放按钮try {await page.mouse.up();} catch (e) { } // 捕获并忽略可能的错误(例如:按钮未按下的错误)// 按下鼠标按钮await page.mouse.down();await new Promise(resolve => setTimeout(resolve, 100)); // 等待 100 毫秒// 拖动到目标点await page.mouse.move(endCoordinates.x, endCoordinates.y);await new Promise(resolve => setTimeout(resolve, 100)); // 等待 100 毫秒// 松开鼠标按钮// await page.mouse.up();// 确保鼠标按钮未被按下,尝试释放按钮try {await page.mouse.up();} catch (e) { } // 'left' is already pressed 由于这个错误 一直出现,所以 逼不得已出此下策 做的兼容 // 捕获并忽略可能的错误(例如:按钮未按下的错误)
}

总结: 解决办法

 try {await page.mouse.up();} catch (e) { } // 捕获并忽略可能的错误(例如:按钮未按下的错误)

这篇关于【Puppeteer】‘left‘ is already pressed, ‘${button}‘ is already pressed 的解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1141634

相关文章

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

vscode不能打开终端问题的解决办法

《vscode不能打开终端问题的解决办法》:本文主要介绍vscode不能打开终端问题的解决办法,问题的根源是Windows的安全软件限制了PowerShell的运行,而VSCode默认使用Powe... 遇到vscode不能打开终端问题,一直以为是安全软件限制问题,也没搜到解决方案,因为影响也不大,就没有管

MySQL 多表连接操作方法(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN)

《MySQL多表连接操作方法(INNERJOIN、LEFTJOIN、RIGHTJOIN、FULLOUTERJOIN)》多表连接是一种将两个或多个表中的数据组合在一起的SQL操作,通过连接,... 目录一、 什么是多表连接?二、 mysql 支持的连接类型三、 多表连接的语法四、实战示例 数据准备五、连接的性

Spring Boot中JSON数值溢出问题从报错到优雅解决办法

《SpringBoot中JSON数值溢出问题从报错到优雅解决办法》:本文主要介绍SpringBoot中JSON数值溢出问题从报错到优雅的解决办法,通过修改字段类型为Long、添加全局异常处理和... 目录一、问题背景:为什么我的接口突然报错了?二、为什么会发生这个错误?1. Java 数据类型的“容量”限制

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

MySQL错误代码2058和2059的解决办法

《MySQL错误代码2058和2059的解决办法》:本文主要介绍MySQL错误代码2058和2059的解决办法,2058和2059的错误码核心都是你用的客户端工具和mysql版本的密码插件不匹配,... 目录1. 前置理解2.报错现象3.解决办法(敲重点!!!)1. php前置理解2058和2059的错误

Docker镜像pull失败两种解决办法小结

《Docker镜像pull失败两种解决办法小结》有时候我们在拉取Docker镜像的过程中会遇到一些问题,:本文主要介绍Docker镜像pull失败两种解决办法的相关资料,文中通过代码介绍的非常详细... 目录docker 镜像 pull 失败解决办法1DrQwWCocker 镜像 pull 失败解决方法2总