【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运行中频繁出现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总

关于Docker Desktop的WSL报错问题解决办法

《关于DockerDesktop的WSL报错问题解决办法》:本文主要介绍关于DockerDesktop的WSL报错问题解决办法的相关资料,排查发现是因清理%temp%文件夹误删关键WSL文件,... 目录发现问题排查过程:解决方法其实很简单:重装之后再看就能够查到了:最后分享几个排查这类问题的小www.cp

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

Pycharm安装报错:Cannot detect a launch configuration解决办法

《Pycharm安装报错:Cannotdetectalaunchconfiguration解决办法》本文主要介绍了Pycharm安装报错:Cannotdetectalaunchconfigur... 本文主要介绍了Pycharm安装报错:Cannot detect a launch configuratio

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发