node-webkit网站测试实用程序

时间:2015-02-27 11:00:15

标签: node.js node-webkit nw.js

我正在尝试使用nw.js构建一个工具,它可以打开网站窗口,加载jQuery库,并运行带参数的脚本,例如验证页面标题文本并将结果返回到主脚本。任何人都可以提供有效代码的样本吗?

1 个答案:

答案 0 :(得分:0)

我尝试制作它,当我打开常规窗口并尝试拨打win.eval documentation它在inject-js-end中所说的不起作用。但我可以访问所有子窗口对象。

我发现有选项:{{3}},它允许我们在页面中注入本地文件。

我将注入的文件示例:

// checker.js
// this file will run in newly opened page.
console.log("checker loaded");
window.myChecker = {
  listeners: [],

  done: function (callback) {
    if (this.result) callback(this.result);
    else this.listeners.push(callback);
  },

  start: function () {
    this.result = {a: 123, title: document.title};
    this.listeners.forEach(function (fn) { fn(this.result); });
  }
};

myChecker.start();

然后我们可以打开任何网址并注入我们的检查器:

var win = gui.Window.open('https://github.com', {
  show: true, // make it false to make window hidden
  "inject-js-end": "./checker.js"
});

win.on('loaded', function () {
  console.log("window loaded");
  win.window.myChecker.done(function (result) {
    console.log("Result is", result);
  });
});

您应该可以看到类似的内容:

[87518:0301/142832:INFO:CONSOLE(1)] ""checker loaded"", source:  (1)
[87518:0301/142835:INFO:CONSOLE(107)] ""window loaded"", source: file:///my_path/index.js (107)
[87518:0301/142835:INFO:CONSOLE(109)] ""Result is" {"a":123,"title":"GitHub \u00B7 Build software better, together."}", source: file:///my_path/index.js (109)

可能你想在checker.js中添加jQuery并做一些不同的事情,所以最好让它返回异步结果。

我使用" inject-js-end"为了确保所有内容在我运行检查程序时准备就绪,它也可以使用" inject-js-start"。