2014-03-19 30 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(指數)選擇;