2011-08-29 5 views
36

드롭 다운 상자의 옵션을 선택하려면 여러 가지 방법이 있습니다. 난 항상 사용 :Selenium WebDriver 및 DropDown Box

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

나는 이것이 약간의 C# 코드 또는 뭔가 생각? 하지만 다음 코드를 이해하는 데 도움이되었습니다. WebElement dropDownListBox = driver.findElement (By.id ("selection"))); \t \t clickThis = new 선택 (dropDownListBox); \t \t clickThis.selectByValue ("Germany"); 훨씬 빠릅니다! 감사! – 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

sry, 내 솔루션만큼 느립니다. – 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

특별한 (나 같은)이 도구에

C# 코드 새로운 사람들 :

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

이상한 이유로 webdriver (버전 2.25.1.0) 용 SelectElement이 firefoxdriver (Firefox 15)에서 제대로 작동하지 않습니다. 때로는 드롭 다운 목록에서 옵션을 선택하지 못할 수도 있습니다. 그러나 크롬 드라이브와 함께 작동하는 것 같습니다 ... This은 크롬 드라이버에 대한 링크입니다. 단지 bin 디렉토리에 놓으십시오. 드롭 다운 목록에서 선택하는 옵션에 대한

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

예 : ID 또는 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

이는 당신이 3 가지 방법으로 필요한 값을 선택할 수 있습니다 완료되면

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

아래와 같이이

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

그냥 개체 선택으로 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"); 

해피 코딩 :)