如何使用Selenium WebDriver和java从下拉列表中选择项目?

时间:2012-10-17 18:09:16

标签: java selenium webdriver selenium-webdriver

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

我试过这个

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

我的上述代码无效。

9 个答案:

答案 0 :(得分:42)

使用 -

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

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

答案 1 :(得分:21)

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

快乐编码:)

答案 2 :(得分: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();   
}

答案 3 :(得分:3)

Google“select item selenium webdriver”将第一个结果显示为How do I set an option as selected using Selenium WebDriver (selenium 2.0) client in ruby。这不是Java,但你应该能够翻译它而不需要太多工作。 https://sqa.stackexchange.com/questions/1355/what-is-the-correct-way-to-select-an-option-using-seleniums-python-webdriver位于前5位,同样不是Java,但API非常相似。

答案 4 :(得分:3)

WebElement selectgender = driver.findElement(By.id("gender"));
selectgender.sendKeys("Male");

答案 5 :(得分:3)

您可以使用Maitreya发布的“Select”类selenium WebDriver。对不起,但我有点困惑,从下拉列表中选择性别为什么要将字符串与“德国”进行比较。这是代码片段,

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

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

答案 6 :(得分: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();   
}

答案 7 :(得分: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);

答案 8 :(得分: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来测试选择选项。上面的例子是从下拉列表中查找并选择语言“菲律宾语”。我相信这会解决问题。