【发布时间】:2017-05-05 12:30:15
【问题描述】:
我目前正在使用不同的视口和代理在 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 时我应该在哪里添加此类代码?
主脚本与 Electron 渲染过程脚本 AFAIK 不同。至于那种解决方案,this 可能会更好,但是如何调用呢?
【问题讨论】:
-
从您链接的同一篇文章看来,API 发生了一些变化electron.atom.io/docs/api/menu/#render-process
-
是的,但我只需要知道我如何在 Nightmare 中做这样的事情。
-
啊,对不起,我误读了您的问题:/。没有从 github 下载源代码,并修改此文件github.com/segmentio/nightmare/blob/…,我不确定。希望其他人可以帮助您。
标签: javascript node.js dom electron nightmare