提问者:小点点

node.js:page.click()在page.evaluate之外不起作用


我试图在一个元素上触发一个click事件,但是如果我没有在Page.Evaluate中使用它,就不会触发click。

这么说,这管用

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

但是,这不起作用

await page.click('#myExport')

我是node.js的新手

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

2)什么时候一个比另一个更好才是真正的好。

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

谢了。


共1个答案

匿名用户

evaluate函数将在浏览器上下文中执行在选择器上定义的click()函数。 评估的工作方式与某人打开浏览器控制台并键入命令的方式相同。

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

我想您可以使用下面的代码来解决这个问题。

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

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

木偶演员的工作评价

page.click()的工作方式