javascript - Puppeteer page.mouse.down()/up() 与点击物理鼠标不一样?

标签 javascript puppeteer

在以下站点,输入诸如“baby”(试试看!)之类的搜索词组后,Puppeteer 会拨打 page.mouse.down()与单击并按住物理鼠标的效果不同:https://www.dextools.io/app/bsc
输入搜索词组后,会出现一个虚假的下拉选择菜单,实际上是UL ,我正在尝试单击第一个搜索结果。所以我使用这样的代码

await page.mouse.move(200, 350); // let's assume this is inside the element I want
await page.mouse.down();
await new Promise((resolve) => setTimeout(resolve, 2000)); // wait 2 secs
await page.mouse.up();
这段代码的预期效果是,在 Puppeteer “按住”鼠标按钮的 2 秒内,虚假下拉菜单保持可见,当 Puppeteer “松开”鼠标按钮时,站点将重定向到该项目的搜索结果被选中。
这正是我使用物理鼠标时发生的情况。
然而,Puppeteer 的情况是,下拉菜单消失了,就像我点击了 Escape 一样。键和 page.mouse.up()命令稍后不再起作用。
我知道 PPT 在鼠标、键盘、按住和释放按钮以及修饰键方面有一些怪癖,尤其是在同时执行上述所有操作时。例如,拖放没有按预期工作,但这里提出的解决方法都不适合我:https://github.com/puppeteer/puppeteer/issues/1265
在这里我的智慧已经结束了;任何指针将不胜感激。谢谢!

最佳答案

我无法使用此测试脚本重现该问题。点击链接,导航如下:

import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({ headless: false, defaultViewport: null });

try {
  const [page] = await browser.pages();

  await page.goto('https://www.dextools.io/app/bsc', { timeout: 0 });

  const input = await page.waitForSelector('.input-container input');
  await input.type('baby');

  const link = await page.waitForSelector('.suggestions-container.is-visible a:not(.text-sponsor)');
  await link.click();
} catch (err) { console.error(err); }

关于javascript - Puppeteer page.mouse.down()/up() 与点击物理鼠标不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68702281/

相关文章:

javascript - 多链when() then() - 延迟对象

javascript - Node.js 时刻时区转换未按预期工作

javascript - 与控件相关的常用 javascript 代码应该在哪里编写

javascript - 在测试域上写入 cookie 并在第二个内部域上读取它

javascript - 图像上的 Jquery UI Datepicker

javascript - Puppeteer:按类查找 iframe

puppeteer - 如何在 puppeteer js 中选择具有多个类名和特定 aria-label 的按钮?

javascript - 如何在 puppeteer 中执行 JavaScript 代码

javascript - 如何使用 Puppeteer 从输入中删除现有文本?

javascript - Puppeteer 失败时自定义错误消息