我试图在一个元素上触发一个click事件,但是如果我没有在Page.Evaluate中使用它,就不会触发click。
这么说,这管用
await page.evaluate(async () => {
$('#myExport').click();
});
但是,这不起作用
await page.click('#myExport')
我是node.js的新手
1)澄清这两种方法之间的区别
2)什么时候一个比另一个更好才是真正的好。
3)为什么点击在page.evaluate内工作,而不是其他方式
谢了。
evaluate函数将在浏览器上下文中执行在选择器上定义的click()
函数。 评估
的工作方式与某人打开浏览器控制台并键入命令的方式相同。
puppeterpage.click()
函数将鼠标移动到所提供的选择器的中心,然后执行mouse.down()
和mouse.up()
操作。 请记住,如果它没有找到匹配的选择器,page.click()
将抛出一个错误,如果它必须滚动页面,它将触发导航,因此它可能会出现意外的行为。
我想您可以使用下面的代码来解决这个问题。
await Promise.all([
page.waitForNavigation(waitOptions),
page.click(selector, clickOptions),
]);
可以在api文档中收集更多信息:
木偶演员的工作评价
page.click()的工作方式