2013-02-19 31 views
23

Tôi hiện đang cố gắng xây dựng một bộ thử nghiệm nhỏ cho CI (Hudson). Tôi đã viết một kịch bản phức tạp để tự động gọi các Scripts khác và điền vào một phần tử DIV đã cho.Thay thế cho PhantomJS để Thử nghiệm

kiểm tra Selenium tôi làm việc cho các ví dụ tầm thường (www.google.com tải, tìm kiếm cho q-tử, vv)

Nhưng khi tôi cố gắng chạy một kiểm tra phức tạp, hoạt động với các trình duyệt Firefox-Driver , trong trường hợp PhantomJS của tôi, nó bị treo. Một segfault xảy ra.

Câu hỏi của tôi là, làm cách nào tôi có thể viết các bài kiểm tra cho giao diện người dùng JS của tôi hoạt động trên Máy chủ Hudson chạy (không đầu).

Hoặc có cách nào để gỡ lỗi nguyên nhân gây ra segfault không?

+0

Một cách để mô phỏng không đầu là chạy trình duyệt trên một Lưới từ xa, như là SauceLabs. Bằng cách đó bạn không phải gặp rắc rối với chrome hoặc phantomjs không đầu. Tuy nhiên, nhược điểm là hiệu năng chậm hơn và bạn cần kết nối bên ngoài mạng của bạn (trừ khi bạn chạy hub của dockerized của riêng bạn cục bộ). – djangofan

Trả lời

14

Cài đặt không đầu có thể thực hiện được khi sử dụng Xvfb làm bộ đệm khung ảo (trên máy Linux lưu trữ các nút lưới). Kết thúc bằng cách sử dụng này và Firefox mặc định.

9

Phantom là một sản phẩm đang phát triển và chỉ tương đối gần đây đã đạt được khả năng tích hợp với Selenium, vì vậy bạn có thể đã gặp lỗi với nó; bạn đã thử báo cáo nó với các nhà phát triển Phantom chưa?

  • Alternatives để Phantom:

    Không có nhiều. Zombie là cái mà tôi biết, nhưng Phantom là đầu và vai phía trên bất kỳ trình duyệt không có đầu nào khác.

    Bạn cũng có thể thử sử dụng máy chủ ảo không đầu để chạy bất kỳ trình duyệt web thông thường nào. (Điều này cũng sẽ có lợi thế là một thử nghiệm thực tế cuộc sống hơn Phantom)

  • Alternatives để Selenium:

    Bạn có thể sử dụng Sahi như một sự thay thế trực tiếp cho Selenium. Nó có khả năng giống nhau, nhưng hoạt động khá khác nhau. Kịch bản thử nghiệm của bạn sẽ cần phải được viết lại, tất nhiên.

    Phantom được thiết kế theo kịch bản, vì vậy bạn không thực sự cần sử dụng công cụ trình điều khiển như Selenium cho tất cả; bạn chỉ có thể viết kịch bản trực tiếp hoặc sử dụng công cụ như CasperJS để viết tập lệnh thử nghiệm của mình.

+0

Vấn đề không phải là selen, đó là Phantom JS (vấn đề iframe). Tôi không biết liệu Zombie có hoạt động hay không, nhưng nó không phải là một lựa chọn vì tôi đang sử dụng Lưới Selenium và cần khả năng chèn các nút cho ví dụ. Kiểm tra IE. – schlingel

14

Slimer.js tương tự như Phantom.js, nhưng sử dụng Gecko thay vì Webkit.

http://slimerjs.org/

+0

SlimerJS không hỗ trợ Webdriver .. – user3060326

+5

Theo văn bản này. Nó chưa thực sự không đầu. – chriz

+0

Hoạt động tuyệt vời. Nó không có lỗi tôi phải đối mặt với PhantomJS – user1079877

6

jsdom là một lựa chọn tốt bây giờ, nó khá trưởng thành.

https://github.com/tmpvar/jsdom/

Kiểm tra không đầu của nó. Tôi không nghĩ rằng nó sẽ làm ảnh chụp màn hình như phantomjs đã làm vì nó không có webkit hoặc gekko renderer JS thuần túy của nó.

Tôi tìm thấy điều này kể từ khi phantomjs segfaults và phiên bản mới sẽ không được tạo. slimerjs là không thực sự không đầu, và XULRunner của nó dựa mà FireFox chỉ giảm xuống, nó không hoạt động với FF hiện tại của tôi.

jsdom khá thú vị, nó bắt đầu cuộc sống dưới dạng trình phân tích cú pháp XML và hiện có hỗ trợ đầy đủ về mạng và hỗ trợ jQuery.

API không giống với phantomj.

+0

Thú vị. Tôi sẽ xem xét nó. – schlingel

Các vấn đề liên quan