2012-07-29 36 views
6

Sự cố:Tải JS bên ngoài đồng bộ với zombie.js

Tôi đang sử dụng zombie.js để kiểm tra javascript phía máy khách, nhưng tôi đang gặp sự cố. Zombie.js không cung cấp thực thi thẻ <script> đồng bộ và thực tế dường như không thực thi các tệp JS bên ngoài. Một thử nghiệm cơ bản xác nhận điều này:

<script type="text/javascript" src="test1.js"></script> 
<script type="text/javascript" src="test2.js"></script> 
<script type="text/javascript" src="test3.js"></script> 

<script type="text/javascript"> 
    console.log("Inline javascript."); 
</script> 

Mỗi thử nghiệm # .js chứa một dòng duy nhất: console.log("TEST#.JS");

Khi tôi làm điều này trong một trình duyệt thông thường, giao diện điều khiển hiển thị mong đợi:

TEST1.JS 
TEST2.JS 
TEST3.JS 
Inline javascript. 

Nhưng khi tôi chạy nó với zombie.js, tôi chỉ thấy một dòng duy nhất Inline javascript.

Đây là những gì tôi đã cố gắng giải quyết vấn đề:

  1. sử dụng document.createElement để tự động nối thêm một thẻ script để tài liệu
  2. sử dụng document.write thêm khối kịch bản vào html
  3. sử dụng một setTimeout trên console.log("Inline javascript") kết hợp với 1 và 2 để cung cấp cho các kịch bản thử nghiệm một số thời gian để tải.

Có cách nào để giải quyết vấn đề này, ngoài việc đặt mã JS từ tất cả các tệp JS bên ngoài của tôi vào khối <script> lớn?

+0

Bạn đã coi PhantomJS thay thế cho Zombie chưa? – Spudley

+0

Vâng, tôi bắt đầu với PhantomJS, nhưng có một số lỗi (ví dụ: navigator.onLine luôn luôn là sai, vv) khiến tôi rời xa nó. – laker

Trả lời

3

Bạn có chắc chắn đối tượng trình duyệt có tùy chọn "runScripts" được đặt thành true không? Nếu không, bạn có thể sử dụng cú pháp sau:

browser.visit('... your page url ...', { runScripts: true }, function (e, b) { 
    console.log('executing callback'); 
}); 
Các vấn đề liên quan