2014-04-10 9 views
6

안녕하세요, js와 zombie js가 자바 스크립트 파일을 머리가없는 브라우저에 삽입하는 기능이 있는지 궁금합니다. phantomjs로 할 수있는 것과 유사합니다.zombie.js로 자바 스크립트 주입하기

팬텀 JS에서 예를 들어, 당신은 할 것 :

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

나는 phantomjs을 사용하고 난 팬텀을 사용하여 요구되는 높은 메모리로 인해 다른 옵션을 테스트입니다 그러나 그것은 내가하고 싶은 일을하지만, 않습니다 js.

+0

하지 보이는 당신이 북마크 작동 방법을 잘 알고 있습니까? 어쩌면 그게 당신이 성취하려고하는 것을 도울 수 있습니다. – user3507600

답변

6

좀비의 DOM API를 지원하므로 문서 태그에 스크립트 태그를 추가 할 수 있습니다.

다음의 예는 좀비 홈페이지에 jQuery를 삽입하는 방법을 보여줍니다

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

시도는 다른 방법으로 주위를 생각하는. 좀비를 손에 들고 있으면서 원하는 모든 것을 주입 할 수 있습니다.

예 : that.browser.window은 사이트 자바 스크립트의 모든 부분이 기본으로 사용하는 jsdom 창을 가리 킵니다. 따라서 이미로드 된 페이지에서 DOM과 다른 모든 창 개체에 액세스 할 수 있습니다.

난 당신이 주입과 archieve하려는 모르겠어요 - 당신이 anway 테스트를 위해 그것을 사용하지 말아야하지만이 실제 목표