代码之家  ›  专栏  ›  技术社区  ›  Yinon

如何使用木偶师执行右键单击?

  •  2
  • Yinon  · 技术社区  · 6 年前

    我正在尝试用鼠标右键点击木偶。

    我尝试添加选项:

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

    但我所得到的只是对组件的常规单击。我跟着木偶人的 API .

    我做错什么了?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Grant Miller    6 年前

    您可以使用 elementHandle.click() button 选项设置为 'right' 右键单击元素:

    const example = await page.$( '#example' );
    
    await example.click( {
        button : 'right'
    });
    

    根据官方文件 元素句柄。单击()) :

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

    我们可以通过查看 source code for mouse.click() 我们可以看到 按钮 选项在发送到之前被考虑 Input.dispatchMouseEvent 在chrome devtools协议中。

    右键单击元素的另一种方法是使用 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 );
    });