node-webkit 网站测试实用程序

node-webkit website test utility

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

我尝试做到这一点,当我打开通常的 window 并尝试调用 win.eval 它在 documentation 中的说法时它不起作用。但是我可以访问所有子 window 对象。

我发现有一个选项:inject-js-end,它允许我们在页面中注入本地文件。

我将注入的文件示例:

// 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();

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

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 并做一些不同的事情,因此最好使其 return 结果异步。

我使用 "inject-js-end" 来确保所有内容在我 运行 检查器时准备就绪,它也可以与 "inject-js-start".

一起使用