2014-03-19 28 views
0

我有两个疑惑:使用Select类选择下拉值?

  1. 假设,如果在下拉有相同名称的两个值,那么我该如何选择使用他们选择类别的1个值?

  2. 假设在下拉列表中有一个值“Emergency”。我需要在开发和生产中运行脚本。在dev url中,下拉值是大写,即紧急。但在Prod env中,下拉值即将出现在紧急情况中,即紧急情况。我需要使脚本以这种方式选择下拉值,而与下拉值的情况无关。我可以通过检查env是否为dev,然后执行此操作来完成此操作。但我不想这样做。我如何使用Select类或任何其他相关方式来做到这一点?

+0

你能否以更好的方式解释你的第二个疑问。目前还不清楚你想达到什么目的。 –

+0

嗨更新了问题 – user3411418

+0

元素的'values'是不同的?对于这两种情况,您都可以'selectByValue()'而不是'selectByVisibleText()'。 –

回答

1

疑点1:下来也有相同名称的两个值假设,如果在下降, 那我怎么才能选择使用他们选择类别的1个值?

你可以去selectByIndex或selectByValue方法。因此,如果您知道下拉菜单中的两个选项相同,并且您希望选择第二个选项,请按索引选择选项。

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

如果2个选项的文本是相同的,值是不同的,那么你可以使用:

select.selectByValue("op2"); 

疑点二:假设在一个下拉存在值“紧急”。我需要在dev和production中运行 脚本。在dev url中,下拉值是 ,大写即EMERGENCY。但是在Prod env中,下降值为 ,即紧急情况。我需要以如此 的方式使脚本选择下拉值,而不管 的下拉值的情况如何。我可以通过检查env是否为dev,然后执行 这样做。但我不想这样做。我该怎么做 它使用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; 
    } 
} 

请注意,我已经写上在此编辑器飞上面的代码。它可能在语法上是错误的。请把它想出来。

+0

select.selectByIndex(2);这里2是什么? 2是我正在寻找的第二个选项的索引....假设在一个下拉列表中有20个下拉值和两个相同的字符串/文本说紧急..应急可能不会出现一个接一个可能出现在不同的顺序..在这种情况下如何处理? – user3411418

+0

在哪两个你想要选择的那两个中?您的测试是否有特定的情况,使您想要选择特定的“紧急”选项。如果是的话,是什么使该选项具体?该选项的价值?该选项的选择输出? –

0

你还有其他的选择

  1. 选择通过值

    selectByValue(值);

  2. 由索引

    selectByIndex(指数)选择;