如何在 NightmareJS 中启用右键单击?
How to Enable Right-Click In NightmareJS?
我目前正在使用不同的视口和代理在 NightmareJS 中进行测试。我正在自动访问一个具有大量复杂脚本和样式的站点。我无法充分复制代理并在单独的测试浏览器中查看,以便该站点为我显示与我访问 Nightmare 时相同的内容。出于这个原因,我需要能够右键单击 Nightmare 的 Electron window 中的元素,以便我可以检查 DOM.
中的特定元素
问题是 Electron window 中禁用了右键单击。我发现 描述了向渲染过程添加代码:
// 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)
注意:此代码可能需要更改,如 中所述,但在使用 Nightmare 时我应该在哪里添加此类代码?
主脚本与 Electron 渲染进程脚本 AFAIK 不同。至于那种解决方案,this 可能是更好的解决方案,但如何调用?
目前没有可用的api噩梦右键,参考问题:
https://github.com/segmentio/nightmare/issues/346
一个可能的解决方案是直接使用 Electron 绕过 nighmarejs。
示例(未测试):
webpage.sendEvent('contextmenu')
我目前正在使用不同的视口和代理在 NightmareJS 中进行测试。我正在自动访问一个具有大量复杂脚本和样式的站点。我无法充分复制代理并在单独的测试浏览器中查看,以便该站点为我显示与我访问 Nightmare 时相同的内容。出于这个原因,我需要能够右键单击 Nightmare 的 Electron window 中的元素,以便我可以检查 DOM.
中的特定元素问题是 Electron window 中禁用了右键单击。我发现
// 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)
注意:此代码可能需要更改,如
主脚本与 Electron 渲染进程脚本 AFAIK 不同。至于那种解决方案,this 可能是更好的解决方案,但如何调用?
目前没有可用的api噩梦右键,参考问题:
https://github.com/segmentio/nightmare/issues/346
一个可能的解决方案是直接使用 Electron 绕过 nighmarejs。
示例(未测试):
webpage.sendEvent('contextmenu')