selenium webdriver必须从动态下拉列表中找到元素

时间:2017-10-09 08:51:23

标签: java selenium selenium-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>`

有些事情让我困惑:

  • 我必须只选择其中没有'没有赔率'的选项 - 它们是可点击的(没有'没有赔率'的那些)

  • 可以选择的那个位于第3个位置(如上所示) - 可以是第一个,第二个,第50个

  • 实际上,我必须选择第一个可点击的(无论选项列表中的哪个位置)

    尝试使用此代码但没有任何成功:

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

请帮忙。提前谢谢你。

1 个答案:

答案 0 :(得分:0)

您可以使用getOptions()获取所有选项,然后获得第一个选项,而不是&#34;没有可用的赔率&#34;文本或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;
    }
}
相关问题