如何在NightmareJS中启用右键单击?

时间:2017-05-02 03:55:05

标签: javascript node.js dom electron nightmare

我目前正在使用不同的视口和代理在NightmareJS中进行测试。我正在自动访问具有大量复杂脚本和样式的网站。我无法在单独的测试浏览器中充分复制代理并进行查看,以便网站显示与我访问Nightmare时相同的内容。出于这个原因,我需要能够在Nightmare的Electron窗口中右键单击元素,以便我可以检查DOM中的特定元素。

问题是在“电子”窗口中禁用了右键单击。我发现this answer描述了向渲染过程添加代码:

// Importing this adds a right-click menu with 'Inspect Element' option
const remote = require('remote')
const Menu = remote.require('menu')
const MenuItem = remote.require('menu-item')

let rightClickPosition = null

const menu = new Menu()
const menuItem = new MenuItem({
  label: 'Inspect Element',
  click: () => {
    remote.getCurrentWindow().inspectElement(rightClickPosition.x, rightClickPosition.y)
  }
})
menu.append(menuItem)

window.addEventListener('contextmenu', (e) => {
  e.preventDefault()
  rightClickPosition = {x: e.x, y: e.y}
  menu.popup(remote.getCurrentWindow())
}, false)

注意:此代码可能需要按照referenced answer中的说明进行更改,但在使用Nightmare时我会在哪里添加此类代码?

主脚本与电子渲染处理脚本AFAIK不同。至于那种解决方案,this可能会更好,但如何调用?

1 个答案:

答案 0 :(得分:0)

目前在噩梦中没有可用的右键点击API,参考问题:

https://github.com/segmentio/nightmare/issues/346

一种可能的解决方案是使用Electron直接绕过nighmarejs。

示例(未测试):

webpage.sendEvent('contextmenu')