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或xpath或名称。 我在这里用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("");