本文主要是介绍【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 的解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!