1

我正在尝试触发元素上的单击事件,但如果我不在 page.evaluate 中使用它,则不会触发单击。

所以,这行得通

await page.evaluate(async () => {
 $('#myExport').click();
});

但是,这不起作用

await page.click('#myExport')

我是 Node.js 的新手,有任何帮助

1)澄清这两种方法之间的区别

2) 什么时候应该优先选择一个会非常好。

3)为什么点击在 page.evaluate 内起作用而不是其他方式

谢谢。

4

1 回答 1

2

评估函数将click()在浏览器上下文中执行选择器上定义的函数。其evaluate工作方式就像有人打开浏览器控制台并输入命令一样。

puppeterpage.click()函数将鼠标移动到提供的选择器的中心,然后执行mouse.down()后面的mouse.up()动作。请记住,如果找不到匹配的选择器,page.click()则会抛出错误,如果必须滚动页面,则会触发导航,因此可能会出现意外行为。

我希望您可以使用以下代码解决问题。

await Promise.all([
  page.waitForNavigation(waitOptions),
  page.click(selector, clickOptions),
]);

可以在 api 文档中收集更多信息:

对 puppeteer 的评估如何运作

page.click() 的工作原理

于 2020-06-10T15:17:07.897 回答