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

Posted

技术标签:

【中文标题】如何使用 Selenium WebDriver 和 java 从下拉列表中选择一个项目?【英文标题】:How to select an item from a dropdown list using Selenium WebDriver with java? 【发布时间】:2012-10-08 01:57:07 【问题描述】:

如何使用 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();   

我上面的代码不起作用。

【问题讨论】:

类似:***.com/questions/7232544/… 对不起,这帮不了我..你能给我方法或给我任何想法,以便我继续 *** 用户帮助那些自助的人:) 我想知道如果您不将选择 WebElement 转换为 Select,那么 selenium 是否可能会单击错误的选项?看到这篇文章 - ***.com/questions/40031592/… 【参考方案1】:

Google “选择项目 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 非常相似。

【讨论】:

【参考方案2】:

使用-

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

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

【讨论】:

请注意,在 C# 中,该类是 SelectElement 而不是 Select。而且它不是核心Selenium.WebDriver 包的一部分,要使用这个类,你还必须安装Selenium.Support 包。 您能告诉我们为什么需要将 WebElement 转换为 Select 实例吗?仅仅是为了让我们可以获得 Select 特定的方法,从而可以轻松地自动化 select 吗?另外,我们可以在不使用 Select 类的情况下自动进行选择吗?【参考方案3】:
WebElement selectgender = driver.findElement(By.id("gender"));
selectgender.sendKeys("Male");

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

【参考方案5】:
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 来测试选择选项。上面的示例是从下拉列表中查找并选择语言“菲律宾语”。我相信这会解决问题。

【讨论】:

【参考方案6】:
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】:

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

快乐编码:)

【讨论】:

【参考方案8】:

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

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

【讨论】:

【参考方案9】:

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

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

【讨论】:

以上是关于如何使用 Selenium WebDriver 和 java 从下拉列表中选择一个项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用PHP绑定设置Selenium(WebDriver和Server)

如何使用 Java 在 selenium webdriver 中打开新选项卡,或者如何使用 selenium webdriver 使用动作类在 selenium 中按 ctrl + T [重复]

如何使用 Selenium WebDriver 和 Java 处理日历弹出窗口?

如何使用selenium webdriver来判断一个网页加载完毕

如何在 Python 上使用 selenium webdriver 和 browsermob 代理捕获网络流量?

如何使用 Selenium WebDriver 处理登录弹出窗口?