Bạn không nói những gì bạn không thích về Selenium, nhưng tôi đoán bạn tự tin với JavaScript, vì vậy đề xuất của tôi sẽ là sử dụng CasperJS làm công cụ chính. Nó hoạt động tốt với các ứng dụng web một trang và đi kèm với công cụ kiểm tra của riêng nó. Mã này vẫn có thể hơi phức tạp một chút, khi sử dụng mệnh đề wait
lồng nhau; đối phó với điều đó bằng cách đảm bảo bạn không cố gắng làm quá nhiều trong mỗi bài kiểm tra, và sau đó nếu vẫn còn phức tạp, refactor. Và đừng quên thiết kế để thử nghiệm: nếu bộ chọn của bạn phức tạp khủng khiếp, hãy cân nhắc thêm một số <span id="xxxx">...</span>
xung quanh nó, vì vậy các thử nghiệm của bạn có thể đi thẳng đến nó!
Bạn có thể sử dụng CasperJS với cả hai PhantomJS và SlimerJS. Sở thích của tôi là dành cho SlimerJS hiện nay, như:
- PhantomJS 1.x bị mắc kẹt trên một WebKit cũ (tương đương với Safari 5.1 và Chrome 13), vì vậy thử nghiệm bất kỳ tính năng hiện đại hơn là bực bội.
- SlimerJS có thể hoạt động với công cụ Gecko hoặc trực tiếp với phiên bản Firefox bạn đã cài đặt. Điều này cho phép bạn định cấu hình hồ sơ Firefox với các plugin bổ sung, chứng chỉ bảo mật, v.v.
- SlimerJS được viết bằng JavaScript, vì vậy dễ dàng hơn để hack nếu bạn có nhu cầu.
Khi PhantomJS 2.0 xuất hiện (vào cuối năm 2013, hy vọng) hoặc nếu trang web của bạn không dựa vào bất kỳ API HTML5 nào gần đây, bạn có thể chạy CasperJS hai lần để nhận mức độ phủ sóng kép. (BTW, PhantomJS là tự nhiên không đầu; SlimerJS cần sử dụng Xvfb, chỉ dành cho Linux hoặc Mac.)
Điều gì Selenium cung cấp cho bạn thêm là bạn có thể kiểm soát các trình duyệt khác, IE nói riêng. (Mặc dù tất nhiên đối với IE bạn cần phải chạy một máy Windows.) Selenium, giống như SlimerJS, cần Xvfb để không có đầu (một lần nữa, ngoại trừ Windows). (BTW, tài liệu Selenium on supported browsers chưa được cập nhật theo độ tuổi, nhưng tôi giả sử các phiên bản sau của mỗi trình duyệt có ít nhất cùng một hỗ trợ được hiển thị ở đó.)
Nguồn
2013-10-31 01:36:09
Điểm đầu tiên chống lại Selenium là tốc độ của nó. Nó rất chậm. – user337620
@ user337620 Tập lệnh Selenium của tôi bị chi phối bởi truy cập mạng, vì vậy tôi chưa bao giờ nhận thấy chúng là chậm, ngoại trừ khởi động. Tôi vừa nhận ra câu hỏi của bạn là tháng 8 năm ngoái, không phải năm nay! Những gì bạn đã kết thúc với, và bạn có hài lòng với nó? –
Tôi đã sử dụng CasperJS với PhantomJS. Tôi cũng sẽ xem xét SlimerJS. – user337620