2012-06-27 20 views
6

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

selenium.selectWindow("name=NewPage");

यह कहता है लेकिन पृष्ठ नहीं मिला: मैं इस कोड का उपयोग करें। मैं भी इस कोड के साथ पेज आईडी या खिताब परिभाषित करने की कोशिश:

String[] wins = selenium.getAllWindowIds(); 
    for (String s : wins) 
     System.out.println("win: " + s); 

यह मेरी नई खोला खिड़की को परिभाषित नहीं करता:

win: MainPage 
win: 

उपयोग selenium.getAllWindowNames() अगर मैं win: selenium_main_app_window win: selenium_blank65815 मिलता है।

मैं इस कोड selenium.selectWindow("name=blank99157"); लिखने लेकिन त्रुटि मिलती है - ERROR: Window does not exist. If this looks like a Selenium bug, make sure to read http://seleniumhq.org/docs/02_selenium_ide.html#alerts-popups-and-multiple-windows for potential workarounds.

उत्तर

0

आप सही खिड़की आईडी का उपयोग नहीं किया जा सकता है।

इस लिंक को देखें। आपको अपना उत्तर here मिल सकता है।

मुझे यह जानने में मदद करता है कि यह आपकी मदद करता है।

+0

मददगार नहीं मुझे – khris

0

selenium.getAllWindowNames(), selenium.getAllWindowTitles() का प्रयास करें .. उनमें से एक निश्चित रूप से काम करेगा।

+0

कार्यों के लिए है, लेकिन पता चला है नाम – khris

+0

उपयोग selenium.selectWindow (mainpage) के साथ खिड़की चयन नहीं कर सकते वर्ष के लिए वापस आने के लिए उस पृष्ठ और selenium.selectWindow (शून्य) जाने के लिए पृष्ठ। यदि यह काम नहीं करता है तो इसे भी सेलेनियम.ऑपेनविंडो ("यूआरएल", "माईविंडो"); सेलेनियम.सेक्स्टविंडो ("माईविंडो"); –

7

खिड़की का स्पष्ट रूप से कोई नाम नहीं है, इसलिए आप इसे नाम से नहीं चुन सकते हैं।

  1. खिड़की जावास्क्रिप्ट के माध्यम से खोला जाता है और आप स्क्रिप्ट को बदल सकते हैं, window.open("someUrl", "someName"); को window.open("someUrl"); बदलने का प्रयास करें, तो आप सेट नाम से खिड़की का चयन करने में सक्षम हो जाएगा है। MDN doc for window.open() पर अधिक जानकारी।

  2. सेलेनियम आरसी <a href="someUrl" target="_blank"> लिंक (जो एक नई विंडों में लिंक खोलता है) का समर्थन नहीं करता है। इसलिए, खिड़की इस प्रकार का एक लिंक द्वारा खोला जाता है, आप इस <a> तत्व को खोजने के लिए, href विशेषता हो और फोन

    selenium.openWindow(theFoundUrl, "theNewWindow"); 
    selenium.selectWindow("id=theNewWindow"); 
    
  3. यह पहले या onload घटना के दौरान जावास्क्रिप्ट के माध्यम से खोला जाता है, तो आप 'बग SEL-339 में या openWindow() और selectWindow() javadocs में इस पर

    selenium.openWindow("", "theNewWindow"); 
    selenium.selectWindow("id=theNewWindow"); 
    

    अधिक जानकारी कॉल करने के लिए की आवश्यकता होगी।

  4. आप केवल दो खिड़कियां है, तो/क्योंकि यह पहली गैर शीर्ष खिड़की का चयन करता है आप

    selenium.selectPopup()

    यही है, जाहिर है, सबसे आसान तरीका है की कोशिश कर सकते नवीनतम ही खोलना चाहते हैं,,। इसलिए, यह केवल तब उपयोगी होता है जब आप नवीनतम पॉपअप का चयन करना चाहते हैं।

  5. नई विंडो एक अद्वितीय शीर्षक है, तो आप क्या कर सकते हैं

    selenium.selectPopup("Title of the window"); 
    

    या selenium.selectWindow("title=Title of the window");

  6. अन्यथा, आप selenium.getAllWindowNames() से अधिक पुनरावृति सही नाम पाने के लिए चाहिए (सेलेनियम के लिए नामों बनाता है एक के बिना खिड़कियां)। हालांकि, आप उस नाम को अपने टेस्टकेस में हार्डकोड नहीं कर सकते हैं, क्योंकि यह हर बार बदल जाएगा, इसलिए आपको इसके लिए कुछ गतिशील तर्क तैयार करने की आवश्यकता होगी।

  7. आपको यह पसंद नहीं होगा: WebDriver के लिए जाएं। यह ऐसी समस्याओं के लिए अधिक प्रतिरोधी होना चाहिए।

+0

मैं संस्करण 6 का प्रयास करें। इस तरह के कोड लिखें: स्ट्रिंग जीतता है [] = selenium.getAllWindowNames(); \t (स्ट्रिंग एस: जीत) \t System.out.println ("जीत:" + एस); \t \t \t \t selenium.selectWindow ("name = wins [2]"); – khris

+0

लेकिन त्रुटि प्राप्त करें: त्रुटि: विंडो मौजूद नहीं है। यदि यह सेलेनियम बग की तरह दिखता है, तो संभावित कार्यवाही के लिए http://seleniumhq.org/docs/02_selenium_ide.html#alerts-popups-and-multiple- विन्डोज़ को पढ़ना सुनिश्चित करें। – khris

+0

@khris हां, अपवाद में लिंक निहित है, दस्तावेज़ों में उल्लिखित कोई कामकाज नहीं है। हालांकि, आप खंड 2 और 3 में मेरे उत्तर में वर्णित कार्यवाही का प्रयास कर सकते हैं, संभवतः वह बग जो आप देख रहे हैं। –

1
WebDriver driver = new FirefoxDriver(); 
WebElement inputhandler = driver.findelement(By.linktext("whatever here")); 
inputhandler.click(); 
String parentHandle = driver.getWindowHandle(); 
Set<String> PopHandle = driver.getWindowHandles(); 
Iterator<String> it = PopHandle.iterator(); 
String ChildHandle = ""; 
while(it.hasNext()) 
{ 
    if (it.next() != parentHandle) 
    { 
     ChildHandle = it.next().toString(); 
     // because the new window will be the last one opened 
    } 
} 
driver.switchTo().window(ChildHandle); 
WebDriverWait wait1 = new WebDriverWait(driver,30); 
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.id("something on page"))); 

// do whatever you want to do in the page here 

driver.close(); 
driver.switchTo().window(parentHandle); 
संबंधित मुद्दे

 संबंधित मुद्दे