42

如何使用 Selenium WebDriver 和 Java 从下拉列表中选择一个项目,如性别(例如男性、女性)?

我试过这个

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

我上面的代码不起作用。

4

9 回答 9

43

利用 -

new Select(driver.findElement(By.id("gender"))).selectByVisibleText("Germany");

当然,你需要 import org.openqa.selenium.support.ui.Select;

于 2012-10-18T06:16:10.157 回答
22

只需将您的 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")));

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

dropdown.selectByVisibleText("Programmer ");

或者

dropdown.selectByIndex(1);

或者

dropdown.selectByValue("prog");

快乐编码:)

于 2013-08-08T06:28:01.227 回答
5

您应该提到的标记名就像“选项”一样,如果文本带有空格,我们可以使用这种方法,它应该可以工作。

WebElement select = driver.findElement(By.id("gender"));
List<WebElement> options = select.findElements(By.tagName("option"));

for (WebElement option : options) {

if("Germany".equals(option.getText().trim()))

 option.click();   
}
于 2013-11-20T14:23:41.317 回答
3

您可以使用 Maitreya 发布的 Selenium WebDriver 的“选择”类。抱歉,但我有点困惑,从下拉菜单中选择性别,为什么要比较字符串与“德国”。这是代码片段,

Select gender = new Select(driver.findElement(By.id("gender")));
gender.selectByVisibleText("Male/Female");

import org.openqa.selenium.support.ui.Select;添加上述代码后导入。现在将选择您给出的性别(男/女)。

于 2012-11-28T11:23:09.463 回答
3
WebElement selectgender = driver.findElement(By.id("gender"));
selectgender.sendKeys("Male");
于 2012-11-26T15:45:23.360 回答
3

谷歌“选择项目 selenium webdriver”显示如何在 ruby​​ 中使用 Selenium WebDriver (selenium 2.0) 客户端设置选项作为第一个结果。这不是 Java,但您应该无需太多工作就可以翻译它。https://sqa.stackexchange.com/questions/1355/what-is-the-correct-way-to-select-an-option-using-seleniums-python-webdriver在前 5 名,同样不是 Java,而是API 非常相似。

于 2012-10-17T18:16:36.983 回答
1

要查找特定的下拉框元素:

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

要获取下拉框中包含的所有元素的列表:

for(int j=1;j<3;j++)
    System.out.println(gender.getOptions().get(j).getText());

要通过单击它时显示的可见文本来选择它:

gender.selectByVisibleText("Male");

按索引选择它(从 0 开始):

gender.selectByIndex(1);
于 2014-04-03T11:17:38.950 回答
1
WebElement select = driver.findElement(By.id("gender"));
List<WebElement> options = select.findElements(By.tagName("option"));
for (WebElement option : options) {
   if("Germany".equals(option.getText()))
       option.click();   
}
于 2013-01-23T16:25:20.340 回答
0
public class checkBoxSel {

    public static void main(String[] args) {

         WebDriver driver = new FirefoxDriver();
         EventFiringWebDriver dr = null ;


         dr = new EventFiringWebDriver(driver);
         dr.get("http://www.google.co.in/");

         dr.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

         dr.findElement(By.linkText("Gmail")).click() ;

         Select sel = new Select(driver.findElement(By.tagName("select")));
         sel.selectByValue("fil");

    }

}

我正在使用 GOOGLE LOGIN PAGE 来测试选择选项。上面的示例是从下拉列表中查找并选择语言“菲律宾语”。我相信这会解决问题。

于 2013-01-23T10:49:22.073 回答