Получить количество элементов li в ul без сохранения в списке - PullRequest
0 голосов
/ 11 января 2019

У меня есть <ul>, в котором есть множество <li>, каждый из которых содержит тег привязки. Путь к элементам списка выглядит так:

String xpath = "//*[@id='page']/section[8]/div/div/div[2]/div/ul/li[";

String part2 = "]/a";

Моя задача состоит в том, чтобы нажать на каждую из этих ссылок, вернуться на домашнюю страницу и затем нажать на другую ссылку.

На данный момент моя веб-страница содержит 5 таких элементов. Чтобы щелкнуть по каждому элементу, я повторяю следующее внутри цикла for:

driver.findElement(By.xpath(part1 + i + part2)).click(); с последующим driver.navigate().back();

Проблема в том, что я жестко закодировал значение 5. Это может быть 6 в другой день или может иметь любое количество ссылок в любой день.

Какую логику я могу использовать для проверки размера ul? Проблема в том, что я не могу использовать java.util.List для предварительного хранения ссылок.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Вам разрешено хранить их количество? :)

int len = driver.findElements(By.xpath("//*[@id='page']/section[8]/div/div/div[2]/div/ul/li/a").size()

findElements найдет все элементы, соответствующие локатору (обратите внимание на множественное число), вернется в виде списка, по которому вы получите размер (длину).

Итак, теперь вы знаете верхнюю границу цикла.

0 голосов
/ 11 января 2019

Поскольку вы упомянули каждый тег <li> имеет один тег привязки. Это означает, что количество тегов <li> и <a> одинаково. Вы можете использовать driver.findElements, чтобы получить список всех тегов <li> и сохранить их в ArrayList и легко получить размер тегов <li>. Это значение будет для вас значением итератора в цикле, который вы уже используете.

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