getAttribute ("value") возвращает 0 - PullRequest
0 голосов
/ 17 апреля 2019

Я хочу нажать на элемент из списка. Я использую getAttribute ("значение"), чтобы получить текст, но он возвращает 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;
            }
        }

Ответы [ 3 ]

0 голосов
/ 17 апреля 2019

Как текст содержит неизвестные символы, так и

  li.getAttribute("value").equalsIgnoreCase("foo2")

не будет работать, так как обе строки не равны.

Вы можете попробовать, как

  li.getAttribute("value").contains("foo2")
0 голосов
/ 17 апреля 2019

Я думаю, что причиной вашей проблемы может быть 1. Неправильный XPath или 2. Ожидания

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


public void selectTag() {
        addReservationBtn.click();
        tags.click();
        // waitforliTextToAppearAfterClick();
        if (tagList.get(1).getAttribute("value").trim().equalsIgnoreCase("foo2")) {
        tagList.get(1).click(); 
  } 
0 голосов
/ 17 апреля 2019

Вы используете @FindBy, который возвращает только первый элемент, найденный данным локатором.Используйте @FindBys, чтобы получить все элементы, найденные данным локатором.

Поскольку предыдущий ответ был неверным, я ударил его, но сохранил его для пояснения комментариев.

Вы можете напрямую получить второй элемент безиспользуя цикл for с помощью

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

Метод getAttribute() возвращает null, если атрибут не найден, и возвращает пустое значение, если атрибут существует, но не содержит никакого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...