seleniumWebDriver和DropDown框

如果我想select一个下拉框的选项,有几种方法可以做到这一点。 我一直使用:

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

但是这并不是每次都有效。 有时select另一个选项。 所以我search了一下,发现这段代码每次都有效:

 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(); } 

但是,这真的很慢。 如果我有一个很长的名单,其中有很多项目,它真的需要太多的时间。 所以我的问题是,是否有一个解决scheme,每次都有效,速度很快?

你可以试试这个:

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

尝试以下操作:

 import org.openqa.selenium.support.ui.Select; Select droplist = new Select(driver.findElement(By.Id("selection"))); droplist.selectByVisibleText("Germany"); 

尝试select助手类,看看是否有什么区别?

 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(); } } 

由于一些奇怪的原因,Web驱动程序(版本2.25.1.0)的SelectElement不能正确地与firefoxdriver(Firefox 15)一起使用。 有时它可能不会从下拉列表中select一个选项。 不过,它似乎和镀铬汽车一起工作…… 这是一个和镀铬汽车的联系,只要把它放在垃圾箱里即可。

我必须努力寻找如何实现特别是那些新的这个工具(像我一样)

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"); 

希望这个帮助别人!

 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"); } } } } 
 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); 

从下拉列表中select一个选项的示例:

点击下拉列表使用id或csspath或xp​​ath或名称。 我在这里用id。

 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. 

只需将您的WebElement包装到Select Object中,如下所示

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

一旦完成,您可以通过3种方式select所需的值。 考虑一个像这样的HTML文件

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

现在确定下拉菜单

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

要select它的选项说'程序员',你可以做

 dropdown.selectByVisibleText("Programmer "); 

要么

  dropdown.selectByIndex(1); 

要么

  dropdown.selectByValue("prog"); 

快乐编码:)

你可以使用这个

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