2009-09-08 4 views
5

मैं समानांतर में अपने परीक्षण चलाने के लिए टेस्टएनजी के साथ सेलेनियम ग्रिड का उपयोग कर रहा हूं। मेरे पास कुछ परीक्षण हैं जिनके लिए उपयोगकर्ता को लॉग इन करने की आवश्यकता है, इसलिए मेरे पास परीक्षण के लिए कॉन्फ़िगर किया गया एक उपयोगकर्ता खाता है।मैं टेलेन के भीतर से अपना परीक्षण चलाने वाले सेलेनियम ग्रिड होस्ट की पहचान कैसे कर सकता हूं?

मुझे यह सुनिश्चित करने के लिए सावधान रहना है कि मेरे परीक्षण उपयोगकर्ता के रूप में लॉग इन करने वाले किसी भी परीक्षण अलग वर्चुअल मशीनों पर चल रहे हैं ताकि सत्र में बाधा न हो, हालांकि नियमित रूप से असफल परीक्षणों की जांच करने के बाद यह पता चला कि यह पर्याप्त नहीं है। इसलिए मैं या तो जरूरत के लिए:

  • प्रत्येक परीक्षा (मैं समझता हूँ कि यह आदर्श समाधान हो सकता है, लेकिन यह/रन कॉन्फ़िगर करने के लिए कुछ समय लग जाएगा के लिए एक नया उपयोगकर्ता सेट करें

  • कई लो। उपयोगकर्ता परीक्षण खाते, और सुनिश्चित करें कि केवल एक एक समय में प्रयोग किया जाता है।

मैं परीक्षण मैं तदनुसार परीक्षण खाते सेट कर सकते हैं चल रहा है मशीन के मेजबान की पहचान कर सकता है। वहाँ यह करने के लिए कोई तरीका है, या क्या कोई और समाधान है जिसे मैंने नहीं सोचा है?

+0

हाय डेव, आप कोशिश करते हैं और सेलेनियम ग्रिड मंचों पर इस प्रश्न को पोस्ट किया था। –

उत्तर

0

मैंने परीक्षण के लिए पूरी तरह से कई अद्वितीय उपयोगकर्ता खातों की स्थापना करके मेरी समस्या हल की, सभी एक संख्या के साथ समाप्त हो रहा है (उदाहरण के लिए: selenium.test1)। सेलेनियम का उपयोग करके एक बंद कार्य के रूप में स्वचालित करना आसान था।

मैं इस नंबर को कोड में संग्रहीत करता हूं, और प्रत्येक बार जब कोई परीक्षण लॉग इन करने की आवश्यकता होती है तो संख्या बढ़ जाती है और उपयोगकर्ता नाम बनाया जाता है।

मैंने 'रिलीज' पर विचार किया और बाद में परीक्षणों को समाप्त करते समय इन खातों का पुन: उपयोग किया, लेकिन फैसला किया कि यह सुनिश्चित करना आसान था कि मेरे परीक्षणों के लिए मेरे पास बहुत सारे परीक्षण खाते थे।

1

मैंने "मैं कौन हूं पृष्ठ" डालकर रिमोट की पहचान करने की समस्या का समाधान किया। मेरे रिमोट वेबड्राइवर (या सेलेनियम) कारखाने के भीतर, मैं उस पृष्ठ पर जाता हूं, उस कक्षा में संग्रहीत करता हूं जिसे मैं सत्र आयोजित करने के लिए उपयोग करता हूं, और इसे लॉग करता हूं। यह पृष्ठ होस्ट नाम, आईपी, ब्राउज़र प्रकार और संस्करण की रिपोर्ट करता है।

0

एक अन्य समाधान यहाँ की पेशकश की:

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; 
    } 
संबंधित मुद्दे