如果我想选择下拉框的选项,有几种方法可以做到这一点。我一直用:
driver.findElement(By.id("selection")).sendKeys("Germany");
但这并不是每次都有效。有时选择另一个选项。所以我google了一下,发现这段代码每次都有效:
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();
}
但这确实很慢。如果我有一个包含很多项目的长列表,那真的需要花费太多时间。所以我的问题是,是否有一个解决方案,每次都有效并且很快?
答案 0 :(得分:47)
你可以试试这个:
IWebElement dropDownListBox = driver.findElement(By.Id("selection"));
SelectElement clickThis = new SelectElement(dropDownListBox);
clickThis.SelectByText("Germany");
答案 1 :(得分:25)
尝试以下方法:
import org.openqa.selenium.support.ui.Select;
Select droplist = new Select(driver.findElement(By.Id("selection")));
droplist.selectByVisibleText("Germany");
答案 2 :(得分:4)
尝试选择帮助程序类,看看是否有任何区别?
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();
}
}
答案 3 :(得分:2)
由于某些奇怪的原因,webdriver(版本2.25.1.0)的SelectElement
无法正常使用firefoxdriver(Firefox 15)。有时它可能无法从下拉列表中选择一个选项。然而,它似乎与chromedriver一起工作...... This是与chromedriver的链接...只需将它放在bin目录中。
答案 4 :(得分:1)
从下拉列表中选择一个选项的示例:
使用id或csspath或xpath或name单击下拉列表。我在这里使用了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.
答案 5 :(得分: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");
希望这能帮到别人!
答案 6 :(得分: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");
}
}
}
}
答案 7 :(得分: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);
答案 8 :(得分:0)
将WebElement包装到Select Object中,如下所示
Select dropdown = new Select(driver.findElement(By.id("identifier")));
完成此操作后,您可以通过3种方式选择所需的值。考虑像这样的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")));
要选择其选项,请说“程序员”&#39;你可以做到
dropdown.selectByVisibleText("Programmer ");
或
dropdown.selectByIndex(1);
或
dropdown.selectByValue("prog");
快乐编码:)
答案 9 :(得分:-2)
您可以使用此
(new SelectElement(driver.FindElement(By.Id(""))).SelectByText("");