如何使用Puppeteer进行右键单击?

时间:2018-10-02 14:25:41

标签: javascript node.js google-chrome-devtools puppeteer headless-browser

我正在尝试使用Puppeteer进行右键单击。

我尝试添加选项:

await component.click({ button: "right" })

但是我得到的只是定期单击该组件。我关注了Puppeteer的API

我在做什么错了?

1 个答案:

答案 0 :(得分:2)

可以将elementHandle.click()button选项设置为'right'一起使用来右键单击元素是正确的:

const example = await page.$( '#example' );

await example.click( {
    button : 'right'
});

根据elementHandle.click()的官方文档:

  

如果需要,此方法将元素滚动到视图中,然后使用page.mouse单击元素的中心。如果该元素与DOM分离,则该方法将引发错误。

我们可以通过查看source code for mouse.click()来验证这一点,并且可以看到在Chrome DevTools协议中将button选项发送给Input.dispatchMouseEvent之前已经考虑过。

可用于右键单击元素的另一种方法是使用use page.click()

await page.click( '#example', {
    button : 'right'
});

或者,您可以使用page.evaluate()右键单击在页面DOM环境中执行了JavaScript的元素:

await page.evaluate( () => {
    const example = document.getElementById( 'example' );
    const event   = document.createEvent( 'MouseEvents' );

    event.initMouseEvent( 'click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 2, null );

    example.dispatchEvent( event );
});