2011-08-29 13 views
36

यदि मैं ड्रॉपडाउन बॉक्स का विकल्प चुनना चाहता हूं, तो ऐसा करने के कई तरीके हैं। मैं हमेशा इस्तेमाल किया:सेलेनियम वेबड्राइवर और ड्रॉपडाउन बॉक्स

driver.findElement(By.id("selection")).sendKeys("Germany"); 

लेकिन वह हर बार काम नहीं किया। कभी-कभी एक और विकल्प चुना गया था। तो मैंने थोड़ी सी गुगल ली और कोड का यह टुकड़ा पाया जो हर बार काम करता है:

WebElement select = driver.findElement(By.id("selection")); 
    List<WebElement> options = select.findElements(By.tagName("option")); 
    for (WebElement option : options) { 
     if("Germany".equals(option.getText())) 
      option.click(); 
    } 

लेकिन यह वास्तव में वास्तव में धीमा काम करता है। यदि मेरे पास कई वस्तुओं के साथ लंबी सूची है, तो इसमें वास्तव में बहुत अधिक समय लगता है। तो मेरा सवाल यह है कि क्या कोई समाधान है जो हर बार काम करता है और तेज़ है?

उत्तर

46

आप इस कोशिश कर सकते:

IWebElement dropDownListBox = driver.findElement(By.Id("selection")); 
SelectElement clickThis = new SelectElement(dropDownListBox); 
clickThis.SelectByText("Germany"); 
+24

मुझे लगता है कि यह कुछ सी # कोड या कुछ और है? लेकिन इससे मुझे निम्नलिखित कोड का पता लगाने में मदद मिली: वेबलेमेंट ड्रॉपडाउनलिस्टबॉक्स = driver.findElement (By.id ("चयन")); \t \t क्लिक करें = नया चयन (ड्रॉपडाउनलिस्टबॉक्स); \t \t clickThis.selectByValue ("जर्मनी"); बहुत तेज़! धन्यवाद! – tester

+2

IWebElement और SelectElement के लिए कौन सा पैकेज आयात किया जाना चाहिए? –

+0

धन्यवाद परीक्षक, वह कोड सेलेनियम 2 के लिए काम करता है। –

3

सहायक वर्ग का चयन करें प्रयास करें और देखें कि यदि कोई फर्क नहीं पड़ता?

String valueToSelect= "Germany"; 
WebElement select = driver.findElement(By.id("selection")); 
Select dropDown = new Select(select);   
String selected = dropDown.getFirstSelectedOption().getText(); 
if(selected.equals(valueToSelect)) {//do stuff already selected} 
List<WebElement> Options = dropDown.getOptions(); 
for(WebElement option:Options){ 
    if(option.getText().equals(valueToSelect)){ 
     option.click(); 
    } 
} 
+1

सूरी, यह मेरे समाधान के रूप में धीमा है। – tester

23

प्रयास करें निम्नलिखित:

import org.openqa.selenium.support.ui.Select; 

Select droplist = new Select(driver.findElement(By.Id("selection"))); 
droplist.selectByVisibleText("Germany"); 
+0

हां, उपरोक्त कोड मेरे लिए अच्छा काम कर रहा है –

+0

इसका स्केल कार्यान्वयन क्या है? धन्यवाद – Way

0

मैं कैसे प्राप्त करने के लिए खोजने के लिए संघर्ष करने की आवश्यकता अपवादभूत जो लोग (मेरे जैसे) इस उपकरण के लिए नए हैं

सी # कोड:

IWebElement ddl = ffDriver.FindElement(By.Id("ddlGoTo")); 
OpenQA.Selenium.Support.UI.SelectElement clickthis = new OpenQA.Selenium.Support.UI.SelectElement(ddl); 
clickthis.SelectByText("Your Text"); 

उम्मीद है कि यह दूसरों की मदद करेगी!

2

कुछ अजीब कारणों से वेबड्राइवर (संस्करण 2.25.1.0) के लिए SelectElement फ़ायरफ़ॉक्सड्राइवर (फ़ायरफ़ॉक्स 15) के साथ ठीक से काम नहीं करता है। कभी-कभी यह ड्रॉपडाउन सूची से एक विकल्प का चयन नहीं कर सकता है। हालांकि, यह क्रोमेट्रिवर के साथ काम करता प्रतीत होता है ... This क्रोमरेड्रिवर का एक लिंक है ... बस इसे बिन डीआईआर में छोड़ दें। ड्रॉप डाउन सूची से एक विकल्प का चयन के लिए

0
public static void mulptiTransfer(WebDriver driver, By dropdownID, String text, By to) 
{ 
    String valuetext = null; 
    WebElement element = locateElement(driver, dropdownID, 10); 
    Select select = new Select(element); 
    List<WebElement> options = element.findElements(By.tagName("option")); 
    for (WebElement value: options) 
    { 
     valuetext = value.getText(); 
     if (valuetext.equalsIgnoreCase(text)) 
     { 
      try 
      { 
       select.selectByVisibleText(valuetext); 
       locateElement(driver, to, 5).click();       
       break; 
      } 
      catch (Exception e) 
      { 
       System.out.println(valuetext + "Value not found in Dropdown to Select"); 
      }  
     } 
    } 
} 
0
select = driver.FindElement(By.CssSelector("select[uniq id']")); 
       selectElement = new SelectElement(select); 
       var optionList = 
        driver.FindElements(By.CssSelector("select[uniq id']>option")); 
       selectElement.SelectByText(optionList[GenerateRandomNumber(1, optionList.Count())].Text); 
+0

यह सही काम करता है। – Emebet

0

उदाहरण:

आईडी या csspath या xpath या नाम का उपयोग करके ड्रॉप डाउन सूची पर क्लिक करें। मैंने यहां आईडी का उपयोग किया है।

driver.findElement(By.id("dropdownlistone")).click(); // To click on drop down list 
driver.findElement(By.linkText("india")).click(); // To select a data from the drop down list. 
-2

आप का उपयोग इस

(new SelectElement(driver.FindElement(By.Id(""))).SelectByText(""); 
0

बस के रूप में नीचे

Select dropdown = new Select(driver.findElement(By.id("identifier"))); 

से पता चला एक बार यह आप 3 तरीके में आवश्यक मान का चयन कर सकते हैं किया जाता है वस्तु का चयन में अपने WebElement लपेट कर सकते हैं।लटकती की पहचान करने के

Select dropdown = new Select(driver.findElement(By.id("designation"))); 

है अपने विकल्प कहते हैं 'प्रोग्रामर' का चयन करने के लिए अब इस

<html> 
<body> 
<select id = "designation"> 
<option value = "MD">MD</option> 
<option value = "prog"> Programmer </option> 
<option value = "CEO"> CEO </option> 
</option> 
</select> 
<body> 
</html> 

की तरह एक HTML फ़ाइल पर विचार करें जो आप कर सकते

dropdown.selectByVisibleText("Programmer "); 

या

dropdown.selectByIndex(1); 

या

dropdown.selectByValue("prog"); 

मुबारक कोडिंग :)

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