Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取列表中Web元素的属性?_Java_List_Selenium - Fatal编程技术网

Java 如何获取列表中Web元素的属性?

Java 如何获取列表中Web元素的属性?,java,list,selenium,Java,List,Selenium,getAttribute()上出现错误,表示无法解析方法。此方法通常适用于WebElement对象,但由于某些原因,并非如此。这是代码,也请检查图片 public void radioButtonUsingLable(String lablename) { List<WebElement> radio = brower.findElements(By.xpath("//label[text() = \"" + lablename + ":\"]/f

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);
    }
}
public void radioButtonUsingLable(字符串标签名称){
List radio=brower.findElements(By.xpath(“//label[text()=
\“+lablename+”:\“]/以下同级::div[1]//子级::输入”);
for(WebElement:radio){
元素。单击();
延迟(2000年);
}
}
@试验
公共void test1(){
RadioButton使用标签(“单选按钮”);
List radio=brower.findElements(By.xpath(“//label[text()=
\“单选按钮:\”]/following sibling::div[1]//child::input”);
for(WebElement:radio){
选中字符串=radio.getAttribute(“选中”);
布尔值isSelected=checked!=null&&
选中。contentEquals(“真”)?真:假;
Assert.assertTrue(isSelected);
}
}

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

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

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);
}
为了帮助将来解决这个问题,请考虑选择更好的变量名。例如,如果您有一个事物列表,则将变量设为复数。在本例中,它会提示您无法对名为
radioButtons
radioButtonsList
的变量调用
getAttribute()


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

@nafeez007-通常我们不建议您附上东西的照片-只需在问题中包含信息。但是,在本例中,我很高兴您这样做了,因为它帮助我更快地识别问题。如果您提供了有关异常堆栈跟踪和html dom结构的更多信息。如果能更快地识别,那就太好了。真正的getAttribute()是红色的,因为代码没有编译,所以不会有堆栈跟踪。谢谢Jason。我犯了一个愚蠢的错误