首页 > 解决方案 > getAttribute("value") 返回 0

问题描述

我想单击列表中的元素。我正在使用 getAttribute("value") 来获取文本,但它返回 0,因此它没有单击元素。请帮忙。

DOM 结构

<ol class ="class1">
<li value="foo1" class="class2"> 
<li value="foo2" class="class2">
</ol>

Xpath:

@FindBy(xpath = "//ol[@class='class1']/li")
List<WebElement> tagList;

我已经尝试过 getText() 但它会返回文本以及未知字符,因为该元素具有与文本一起的图标。

这是我的代码

public void selectTag() {
        addReservationBtn.click();
        tags.click();
        for(WebElement li : tagList) {
    // System.out.println(li.getAttribute("value"));
            if (li.getAttribute("value").equalsIgnoreCase("foo2")) {
                li.click();
                break;
            }
        }

标签: javaselenium

解决方案


您正在使用@FindBy它只返回给定定位器找到的第一个元素。用于@FindBys获取给定定位器找到的所有元素。

由于之前的答案是错误的,我已经删除了它,但为了澄清评论而保留了它。

您可以直接获取第二个元素,而无需使用 for 循环

@FindBy(xpath = "//ol[@class='class1']/li[@class='class2']")

如果没有找到属性,则该getAttribute()方法返回null,当有属性但不包含任何值时,该方法返回空。


推荐阅读