2013-06-24 24 views
7

Vấn đề là khả năng nhận dạng hình ảnh của Sikuli chỉ hoạt động khi mục tiêu của các bài kiểm tra Sikuli ở mặt trước và nó có toàn quyền truy cập chuột. Trong cấu hình hiện tại của nó, các dự án Jenkins không bao giờ nhìn thấy được từ màn hình nền của nút nô lệ cửa sổ.Sikuli, kiểm tra selen trên Jenkins: Cho phép trình duyệt được khởi chạy ở nền trước, vì nó là khi tôi chạy nó từ máy phát triển?

Cách bộ thử nghiệm tự động hiện tại của tôi được thiết lập ngay bây giờ, khoảng 30 bài kiểm tra được viết chỉ bằng selen. Trong hai bài kiểm tra cuối cùng, selen bắt đầu một trình duyệt web (hiện tại là chromedriver nhưng có thể là firefox hoặc IE) và điều hướng đến các trang bên phải và Sikuli làm điều đó từ đó. Cả hai đều sử dụng các ràng buộc ngôn ngữ java.

Hiện tại Sikuli có vẻ được cài đặt đúng, nhưng khi được yêu cầu bấm qua danh sách các màn hìnhĐược cho là được điền bằng cách khớp màn hình với hình ảnh đích, nó ngay lập tức ném một NPE.

Làm cách nào để thay đổi cài đặt Jenkins trên cửa sổ 7 slave để cho phép trình duyệt được khởi chạy ở nền trước, vì khi tôi chạy nó từ máy phát triển Windows 7?

Trả lời

7

Vì vậy, bạn đã có một máy phát triển nơi Sikuli hoạt động và máy thử nghiệm nơi Jenkins chạy Sikuli và nó không hoạt động.

Tôi có cùng thiết lập này (với trình kiểm tra Sikuli/nô lệ Jenkins đang chạy Windows 7). Những gì làm việc cho tôi là để máy thử chạy một máy chủ VNC, đăng nhập như một tài khoản thử nghiệm trên VNC, và khởi động nô lệ Jenkins như một ứng dụng thông thường và không phải là một dịch vụ. Tôi đã sử dụng UltraVNC server. Theo số liệu bảo mật của Windows, được thiết kế để ngăn chặn người dùng từ xa kiểm soát máy của bạn mà không có sự hiện diện của bạn

Nếu bạn chạy Jenkins như một dịch vụ, nó không nhận được một máy tính để bàn thực sự được phân bổ cho nó. Kịch bản sẽ chạy, nhưng (như bạn đang nhìn thấy) Sikuli sẽ không thực sự có thể tìm thấy bất cứ điều gì bởi vì không có gì cho nó để xem xét. (Selenium đang kiểm tra nội dung trang theo chương trình, do đó, nó không nhớ rằng trang không phải là thực sự là được hiển thị trên màn hình bất kỳ.)

Bạn cũng có thể chạy Jenkins và để chính mình đăng nhập và bỏ qua máy chủ VNC . Tôi muốn chạy máy mà không cần màn hình hoặc bàn phím và vẫn có quyền kiểm soát. Nếu đó là mục tiêu của bạn là tốt, bạn không thể sử dụng Remote Desktop, bởi vì nó phân bổ một máy tính để bàn mới trên kết nối và sau đó phá hủy nó khi bạn ngắt kết nối. (Vì vậy Jenkins sẽ làm việc khi bạn đang quan sát và thất bại khi bạn đi về đêm. Rất khó chịu!)

Là một lợi ích phụ, nếu bạn làm theo cách này bạn có thể kết nối qua VNC và xem Jenkins khi nó đang chạy kiểm tra.

+0

đó là một cách tiếp cận thú vị Nathaniel, tôi đã không nghĩ đến sử dụng VNC để làm điều đó.Đó là một loại giải pháp hackish, nhưng tôi có thể thấy lợi thế theo cách này bất cứ điều gì tôi có thể chạy trên máy của mình được đảm bảo vẫn hoạt động khi nó được tích hợp vào thiết lập này. – user2387855

1
  1. biến máy tính từ xa thành máy khách từ xa.
  2. chạy chương trình cứu trợ jenkins như chương trình trong phiên đó cmd/c bắt đầu java -jar slave.jar -jnlpUrl http .... slave-agent.jnlp -secret ... (tìm trong trình chủ jenkins của bạn (được hiển thị khi dịch vụ nô lệ là xuống)
  3. bộ nó tất cả để chạy ở salve chiến thắng khởi động.
+0

sử dụng tệp mstsc rdp – clay

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