2017-10-09 244 views
0

我希望有人能幫我解決這個問題。 必須從動態下拉列表中選擇一個活動,禁用否。以下是下拉列表的一部分。硒webdriver必須從動態下拉菜單中找到元素

<option value="1-2639425" disabled="disabled">21/10/2017 16:45 - Felipe Arantes - Josh Emmett (No odds available)</option> 
<option value="1-2636744" disabled="disabled">21/10/2017 16:45 - Jim Wallhead - Warlley Alves (No odds available)</option> 
<option value="1-2633126">21/10/2017 20:00 - Donald Cerrone - Darren Till</option>` 

很少有事情讓我困惑:

  • 我只能選擇不具有在它沒有可用的賠率'的一個(或多個)選項 - 它們是可點擊(那些無「無可用賠率」)

  • 這是沒有必要的,其可以被選擇的一個駐留在第三位置(如上所示) - 可以是第一,第二,第50

  • 事實上,我必須選擇第一點擊一個(無論身在何處居住在選項列表)

    這個代碼,但沒有任何成功的嘗試:

    Select dropdown=new Select(driver.findElement(By.xpath("xpath to 3rd option"))); 
    dropdown.selectByIndex.selectByIndex(2); 
    Thread.sleep(5000); 
    

請assist.Thank你提前。

回答

0

您可以使用getOptions()獲得所有選項,然後獲取第一個選項,但沒有「無可用賠率」文本或disabled屬性。然後你可以使用Select使用value屬性

另外要選擇一個選項,Select類沒有得到一個選項作爲參數,它得到父<select>標籤作爲參數

Select dropdown = new Select(driver.findElement(By.xpath("xpath to the select tag"))); 
List<WebElement> options = dropdown.getOptions(); 

for (WebElement option : options) { 
    // if (option.getAttribute("disabled") != null) 
    if (!option.getText().contains("No odds available")) { 
     String value = option.getAttribute("value"); 
     dropdown.selectByValue(value); 
     break; 
    } 
} 
+1

感謝@Guy - 解決了我問題 – Zoran

+0

我有幾個步驟來完成,並在一個步驟中,我有driver1,driver2,..以選擇不同的下拉列表 我選擇了dropdown3 = new Select(driver.findElement(By.xpath * [@ ID = \ 「尖端 - 事件\」]「))); \t \t列表 options = dropdown3.getOptions(); \t \t爲(WebElement選項:選項){ \t \t //如果(option.getAttribute( 「禁用」)!= NULL) \t \t如果(option.getText()包含( 「沒有勝算可用」! )){ \t \t String value = option.getAttribute(「value」); \t \t dropdown3.selectByValue(value); \t \t break; \t \t} \t \t} \t \t \t \t的Thread.sleep(5000);」 throws er – Zoran

+0

錯誤是: 線程中的異常「main」org.openqa.selenium.WebDriverException:未知錯誤:元素 Zoran