在电子应用程序内运行梦魇js脚本

时间:2017-09-06 16:51:45

标签: javascript node.js electron nightmare

所以当你点击电子应用程序里面的按钮时,我想要执行这个nightmarejs代码(打开新窗口并运行脚本)。但是我通过互联网搜索并没有对我有用:/(我有一个mac)

var Nightmare = require('nightmare');
var nightmare = Nightmare({
  electronPath: require('${__dirname}/node_modules/electron'),
  show: true
});

nightmare
  .goto('http://yahoo.com')
  .type('form[action*="/search"] [name=p]', 'github nightmare')
  .click('form[action*="/search"] [type=submit]')
  .wait('#main')
  .evaluate(function () {
    return document.querySelector('#main .searchCenterMiddle li a').href
  })
  .end()
  .then(function (result) {
    document.getElementById("results").innerHTML = result;
  })
  .catch(function (error) {
    console.error('Search failed:', error);
  });

const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow
let mainWindow;

function createWindow() {
    mainWindow = new BrowserWindow({
        title: "Dummy",
        fullscreenable: false,
        resizable: false,
        alwaysOnTop: false,
        width: 420,
        height: 250,
        'web-preferences': {
            'web-security': false
        }
    })
    mainWindow.loadURL(`file://${__dirname}/index.html`)
    mainWindow.on('closed', function() {
        mainWindow = null
    })
}

app.on('ready', createWindow)
app.on('window-all-closed', function() {
    if (process.platform !== 'darwin') {
        app.quit()
    }
})
app.on('activate', function() {
    if (mainWindow === null) {
        createWindow()
    }
})

谢谢, Bertram的

1 个答案:

答案 0 :(得分:0)

我没有看到任何会触发您想要运行的代码的内容。

如果你把它交给我工作,我会做两件事:

  • 将噩梦代码包装在一个函数中,以便

    需要(" ./ mynighmare.js&#34)。sleepPoorly()

  • 在index.html中添加一个按钮,调用上面一行来实际运行代码。

...然后我会做一大堆测试,因为我的初稿不会正常工作:)