Java selected()方法存在错误

Java selected()方法存在错误,java,selenium,Java,Selenium,我试着用selenium测试一组单选按钮。我已将它们分组在一个列表中 @FindBy(xpath = "//ux-button-group//input[@name='options']") private List<WebElement> granularity; 我已经调试过了,如果我尝试使用最后一个元素(3),那么它会给出true。你可能会像我一样认为,列表中的顺序是颠倒的,但事实并非如此。我已经通过检索列表中每个元素的id进行了检查,它们的顺序正确。我还尝试检索“chec

我试着用selenium测试一组单选按钮。我已将它们分组在一个列表中

@FindBy(xpath = "//ux-button-group//input[@name='options']") 
private List<WebElement> granularity;
我已经调试过了,如果我尝试使用最后一个元素(3),那么它会给出
true
。你可能会像我一样认为,列表中的顺序是颠倒的,但事实并非如此。我已经通过检索列表中每个元素的id进行了检查,它们的顺序正确。我还尝试检索“checked”属性,但它是错误的。对于前3个按钮,返回
null
,对于最后一个按钮,返回
true

Html:


每日的
周报
月刊
每年

Hmm,xpath似乎不正确,
ux按钮组
应该是这样使用它的标记

xpath应该是:
//div[包含(@class,'ux按钮组')]//输入[@name='options']

或使用css更简单:
.ux按钮组输入[名称=选项]

或其他css(更好,因为您可以从id名称中看到所代表的内容):
input[id*='shared.granularity']


如果可能的话,如果没有任何限制,也可以尝试selenium 3.141.59。

需要查看您的代码,似乎您在选择添加更多元素之前获得了列表code@Dev在读取字段之前,我等待页面加载并初始化字段。无论如何,一所大学已经帮我解决了一个问题:
((JavascriptExecutor)driver.executeScript(“返回参数[0].getAttribute('checked');”),webelement)
顺便说一句,我们使用的不是最新版本的selenium,而是
2.51.0
ux按钮组标记存在,只是我没有在html示例中附加它。升级版本对测试来说很有意思,但我们目前不能这样做,因为这意味着要更改部分基本代码。据我所知,selenium 3中有很多改进,更改版本应该不会有太大影响,因为API不会更改,只会更改其背后的实现。如果你有时间,我认为值得一试。这将是一个改进,因为另一个原因->如果基础代码不依赖于特定的版本和实现,这将是一个很好的选择。祝你好运,我希望看到一些与升级相关的问题:)
assertTrue(granularity.get(0).isSelected(), "Granularity should have selected the first option");
<div data-toggle="buttons" class="ux-button-group btn-group  btn-lg" data-e2e="ux-button-group">
    <!----><!---->
    <label class="btn btn-primary btn-lg ng-star-inserted active">
        <input autocomplete="off" name="options" type="radio" id="shared.granularity.0" checked="true"> Daily <!---->
    </label>
    <label class="btn btn-primary btn-lg ng-star-inserted">
        <input autocomplete="off" name="options" type="radio" id="shared.granularity.1" checked="false"> Weekly <!---->
    </label>
    <label class="btn btn-primary btn-lg ng-star-inserted">
        <input autocomplete="off" name="options" type="radio" id="shared.granularity.2" checked="false"> Monthly <!---->
    </label>
    <label class="btn btn-primary btn-lg ng-star-inserted">
        <input autocomplete="off" name="options" type="radio" id="shared.granularity.3" checked="false"> Yearly <!---->
    </label>
    <!----><!---->
</div>