首页 > 解决方案 > 如何获取列表中 Web 元素的属性?

问题描述

照片

我在 getAttribute() 上遇到错误,说无法解决方法。此方法通常适用于 WebElement 对象,但出于某种原因,这不是。这是代码也检查图片。

public void radioButtonUsingLable(String lablename) {

    List<WebElement> radio = brower.findElements(By.xpath("//label[text() = 
            \"" + lablename + ":\"]/following-sibling::div[1]//child::input"));

    for (WebElement element: radio) {
        element.click();
        delay(2000);
    }
}


@Test
public void test1(){
    radioButtonUsingLable("Radio Button");

    List<WebElement> radio = brower.findElements(By.xpath("//label[text() = 
            \"Radio Button:\"]/following-sibling::div[1]//child::input"));

    for (WebElement element: radio) {
        String checked = radio.getAttribute("checked");
        boolean isSelected = checked != null  && 
        checked.contentEquals("true") ? true : false;
        Assert.assertTrue(isSelected);
    }
}

标签: javalistselenium

解决方案


如果你看到类似的东西(在 OP 的照片中显示为方法名称的红色下划线),这可能意味着你认为你拥有的对象类型实际上不是。

在您的代码中,radio实际上是一个列表。element是该列表中的一个元素。你应该有:

for (WebElement element: radio) {
    String checked = element.getAttribute("checked");  // change radio to element here
    boolean isSelected = checked != null  && 
            checked.contentEquals("true") ? true : false;
    Assert.assertTrue(isSelected);
}

为了帮助将来解决这个问题,请考虑选择更好的变量名称。例如,如果您有一个事物列表,请将变量设为复数。在这种情况下,它会给你一个线索,你不能调用一个名为orgetAttribute()的变量。radioButtonsradioButtonsList

请记住,有时您可以拥有的最好的文档是干净的代码。


推荐阅读