2014-04-10 50 views
6

Witam Zastanawiam się, czy istnieje możliwość js i zombie js do wstrzykiwania plików javascript do bezgłowej przeglądarki, podobnie jak w phantomjs.Wstrzykiwanie javascript do zombie.js

Na przykład w fantomowych js byś zrobił:

page.injectJs("amino/TVI.js") 

Użyłem phantomjs i robi to, co chcę zrobić, ale jednak jestem testowania innych opcji ze względu na wysoką pamięci wymaganej przy użyciu fantomu js.

+0

Czy jesteś pewny, jak pracować skryptozakładki? Może to pomoże ci zrobić to, co próbujesz osiągnąć. – user3507600

Odpowiedz

6

można dołączyć tag skryptu do obiektu dokumentu, ponieważ obsługuje on API DOM w zombie.

Poniższy przykład pokazuje, jak wstawić jQuery do głównej 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()")); 
    }); 
}); 
0

staram się myśleć na odwrót. Masz już wszystko pod ręką w zombie, aby wstrzykiwać wszystko, co chcesz.

Na przykład: that.browser.window wskazuje na okno jsdom, którego każda część witryny javascript używa jako podstawy. Możesz więc uzyskać dostęp do obiektu dom i wszystkich innych obiektów okna na załadowanej stronie.

Nie wiem, co chcesz Archiwum ze wstrzykiwaniem - nie należy go używać do testowania Anway, ale wygląda to nie jest rzeczywisty cel