在以下站点,输入诸如“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/