2009-09-08 27 views
5

Tôi đang sử dụng Lưới Selenium với TestNG để chạy thử nghiệm song song. Tôi có một số bài kiểm tra yêu cầu người dùng đăng nhập, vì vậy tôi đã cấu hình tài khoản người dùng để thử nghiệm.Làm thế nào tôi có thể xác định máy chủ Lưới Selenium chạy thử nghiệm của tôi từ bên trong thử nghiệm?

Tôi đã cẩn thận để đảm bảo rằng mọi thử nghiệm liên quan đến đăng nhập khi người dùng thử nghiệm của tôi chạy trên các máy ảo riêng biệt để các phiên không bị gián đoạn, tuy nhiên sau khi điều tra một số thử nghiệm không thường xuyên, nó chỉ ra rằng điều này là không đủ. Vì vậy, tôi có cần phải:

  • Thiết lập người dùng mới cho mỗi bài kiểm tra (Tôi hiểu điều này có thể là giải pháp lý tưởng, nhưng nó sẽ mất một thời gian để cấu hình/chạy

  • Có nhiều. tài khoản người dùng kiểm tra, và đảm bảo rằng chỉ có một được sử dụng tại một thời điểm.

Nếu tôi có thể xác định các máy chủ của máy chạy thử nghiệm tôi có thể thiết lập tài khoản thử nghiệm cho phù hợp. có cách nào để làm điều này, hoặc là có một giải pháp khác mà tôi chưa từng nghĩ tới?

+0

Hi Dave, Bạn hãy thử và đăng câu hỏi này ở các diễn đàn Selenium Grid. –

Trả lời

0

Tôi đã giải quyết được sự cố bằng cách thiết lập một số tài khoản người dùng duy nhất hoàn toàn để thử nghiệm, tất cả kết thúc bằng một số (ví dụ: selenium.test1). Điều này là đơn giản để tự động hóa như một nhiệm vụ một bằng cách sử dụng Selenium.

Tôi lưu số này vào mã và mỗi khi kiểm tra cần đăng nhập số sẽ tăng lên và tên người dùng được tạo.

Tôi đã xem xét 'phát hành' và sau đó sử dụng lại các tài khoản này khi kiểm tra kết thúc, nhưng quyết định sẽ dễ dàng hơn để đảm bảo tôi có nhiều tài khoản thử nghiệm cho thử nghiệm của mình.

1

Tôi đã giải quyết được vấn đề xác định điều khiển từ xa bằng cách đặt "trang tôi là ai". Trong nhà máy điều hành web từ xa của tôi (hoặc Selenium), tôi truy cập trang đó, lưu nó trong lớp mà tôi sử dụng để giữ phiên, và đăng nhập nó. Trang này báo cáo Tên máy chủ, IP, loại và phiên bản Trình duyệt.

0

Một giải pháp được cung cấp ở đây:

https://groups.google.com/forum/#!topic/selenium-users/8eNRW9JnayQ

public static String[] getHostNameAndPort(String hostName, int port, SessionId session) { 
     String[] hostAndPort = new String[2]; 
     String errorMsg = "Failed to acquire remote webdriver node and port info. Root cause: "; 

     try { 
      HttpHost host = new HttpHost(hostName, port); 
      DefaultHttpClient client = new DefaultHttpClient(); 
      URL sessionURL = new URL("http://" + hostName + ":" + port + "/grid/api/testsession?session=" + session); 
      BasicHttpEntityEnclosingRequest r = new BasicHttpEntityEnclosingRequest("POST", 
        sessionURL.toExternalForm()); 
      HttpResponse response = client.execute(host, r); 
      JSONObject object = extractObject(response); 
      URL myURL = new URL(object.getString("proxyId")); 
      if ((myURL.getHost() != null) && (myURL.getPort() != -1)) { 
       hostAndPort[0] = myURL.getHost(); 
       hostAndPort[1] = Integer.toString(myURL.getPort()); 
      } 
     } catch (Exception e) { 
      logger.log(Level.SEVERE, errorMsg, e); 
      throw new RuntimeException(errorMsg, e);    
     } 
     return hostAndPort; 
    } 
Các vấn đề liên quan