嗨我想知道节点js和zombie js是否有能力将javascript文件注入无头浏览器,类似于你可以用phantomjs做的。
例如,在幻影js中你会这样做:
page.injectJs("amino/TVI.js")
我已经使用了phantomjs,它确实做了我想做的事情但是我正在测试其他选项,因为使用幻像js需要很高的内存。
答案 0 :(得分:6)
您可以将脚本标记附加到文档对象中,因为它支持僵尸中的DOM API。
以下示例显示如何将jquery插入zombie主页:
var Browser = require("zombie");
var assert = require("assert");
// Load the page from localhost
browser = new Browser()
browser.visit("http://zombie.labnotes.org/", function () {
assert.ok(browser.success);
// append script tag
var injectedScript = browser.document.createElement("script");
injectedScript.setAttribute("type","text/javascript");
injectedScript.setAttribute("src", "http://code.jquery.com/jquery-1.11.0.min.js");
browser.body.appendChild(injectedScript);
browser.wait(function(window) {
// make sure the new script tag is inserted
return window.document.querySelectorAll("script").length == 4;
}, function() {
// jquery is ready
assert.equal(browser.evaluate("$.fn.jquery"), "1.11.0");
console.log(browser.evaluate("$('title').text()"));
});
});
答案 1 :(得分:0)
尝试相反的想法。你已经掌握了僵尸所需的一切,以便注入你想要的一切。
例如:that.browser.window
指向jsdom窗口,您的网站javascript的每个部分都用作基础。因此,您可以访问已加载的页面中的dom和所有其他窗口对象。
我不知道你想要注射什么 - 你不应该用它进行测试,但看起来这不是你的实际目标