Привет, мне было интересно, есть ли возможность в узлах js и zombie js вставлять javascript-файлы в безгласный браузер, аналогично тому, что вы можете делать с phantomjs.
Например, в phantom js вы бы сделали:
page.injectJs("amino/TVI.js")
Я использовал phantomjs, и он делает то, что я хочу, но, тем не менее, я тестирую другие параметры из-за высокой памяти, необходимой при использовании фантомных js.
вы можете добавить скриптовый тег в объект документа, поскольку он поддерживает 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()")); }); });
Попытайтесь думать наоборот. У вас уже есть все в ваших armх в зомби, чтобы вводить все, что вы хотите.
Например: that.browser.window
указывает на окно jsdom, которое использует каждая часть вашего javascript вашего сайта в качестве базы. Таким образом, вы можете получить доступ к dom и всем другим объектам windows на уже загруженной странице.
Я не знаю, что вы хотите архивировать с помощью инъекций – вы не должны использовать его для тестирования в будущем, но, похоже, это не ваша фактическая цель