2014-04-10 14 views
6

Xin chào, tôi đã tự hỏi liệu có khả năng trong các nút js và js zombie để chèn các tệp javascript vào trình duyệt không đầu, tương tự như những gì bạn có thể làm với các phantomj.Tiêm javascript vào zombie.js

Ví dụ trong js ma bạn sẽ làm gì:

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

Tôi đã sử dụng phantomjs và nó làm những gì tôi muốn nó làm nhưng tuy nhiên tôi đang thử nghiệm các lựa chọn khác do bộ nhớ cao theo yêu cầu bằng cách sử dụng ma js.

+0

Bạn có quen thuộc với cách dấu trang hoạt động không? Có lẽ điều đó có thể giúp bạn làm những gì bạn đang cố gắng hoàn thành. – user3507600

Trả lời

6

bạn có thể nối thêm thẻ tập lệnh vào đối tượng tài liệu vì nó hỗ trợ API DOM trong zombie.

Ví dụ sau đây cho thấy làm thế nào để chèn jquery vào trang web của 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

Cố gắng nghĩ cách khác xung quanh. Bạn đã có tất cả mọi thứ trong tay của bạn trong zombie để tiêm tất cả mọi thứ bạn muốn.

Ví dụ: trỏ đến cửa sổ jsdom mà mọi phần của trang web của bạn javascript đang sử dụng làm cơ sở. Vì vậy, bạn có thể truy cập vào dom và tất cả các đối tượng cửa sổ khác trong trang đã được tải.

Tôi không biết những gì bạn muốn lưu trữ bằng cách tiêm - bạn không nên sử dụng nó để thử nghiệm đường, nhưng có vẻ đây không phải là mục tiêu thực tế của bạn