使用Select class选择下拉值?

时间:2014-03-19 12:54:50

标签: selenium webdriver

我有两个疑问:

  1. 假设在下拉列表中有两个具有相同名称的值,那么如何使用Select class从中选择一个值?

  2. 假设在下拉列表中有一个值" Emergency"。我需要在开发和生产中运行脚本。在设备中,下拉值以大写形式出现,即紧急情况。但是在Prod env中,下拉值正在降低,即紧急。我需要以这样的方式制作脚本,即无论下拉值如何,它都将选择下拉值。我可以通过检查env是否是dev然后执行此操作来执行此操作。但我不想这样做。如何使用Select类或任何其他相关方法来执行此操作?

2 个答案:

答案 0 :(得分:1)

  

怀疑1:假设在下拉列表中有两个具有相同名称的值,   那么如何使用Select class?

从中选择一个值呢?

您可以选择selectByIndex或selectByValue方法。因此,如果您知道下拉列表中的两个选项相同,并且您想要选择第二个选项,则按索引选择该选项。

Select select = new Select(driver.findElement(By.id("dropDown_id_here")));
select.selectByIndex(2);

如果2个选项的文本相同且值不同,则可以使用:

select.selectByValue("op2");
  

怀疑2:假设在下拉列表中有一个值“紧急”。我需要运行   开发和生产中的脚本。在dev url中,下拉值即将到来   大写,即紧急情况。但在Prod env中,下拉值是   以低语言出现,即紧急。我需要制作这样的剧本   不管情况如何,它将选择下拉值的方式   下拉值。我可以通过检查env是否是开发来做到这一点   这样做也是如此。但我不想这样做。我能怎么做   它使用Select类或任何其他相关方法来做到这一点?

Select select = new Select(driver.findElement(By.id("dropDown_id_here")));
List<WebElement> options = select.getOptions();

for(WebElement option : options)
 {
   if(option.getText().equalsIgnoreCase("emergency"))
    {
      option.click();
      break;
    }
 }

请注意,我已在此编辑器中动态编写上述代码。 可能在语法上是错误的。请从中获取想法。

答案 1 :(得分:0)

你有其他选择

  1. 按值选择

    selectByValue(值);

  2. 按索引选择

    selectByIndex(索引);