Как при помощи Selenium+Webdriver+Java нажать на кнопку, у которой динамический локатор?

Вот код :
button class="user-actions-follow-button js-follow-btn follow-button btn small small-follow-btn" type="button">
span class="button-text follow-text">
span class="button-text following-text"> Following /span>
span class="button-text unfollow-text"> Unfollow /span>
span class="button-text blocked-text">Blocked/span>
span class="button-text unblock-text">Unblock/span>
span class="button-text pending-text">Pending/span>
span class="button-text cancel-text">Cancel/span>
/button>

Такие кнопки появляются по мере прокручивания страницы...как мне нажать на них? Так как ID and XPATH каждый раз меняется
  • Вопрос задан
  • 5532 просмотра
Пригласить эксперта
Ответы на вопрос 3
@denizen
findElementsByXPath() вернёт список найденных элементов, которые можно обработать в цикле.
Т.е. если, например, все кнопки Following имеют класс "button-text following-text", то передав в findElementsByXPath() строку ".//span[@class='button-text following-text']", можно получить список всех кнопок Following на странице.
Ответ написан
Комментировать
@Budaev
getDriver().findElement(By.xpath(".//span[contains(text(),'Following')]")).click()

Рекомендую к изучению Оси XPath и различные функции типа contains(), text(), count() и т.п.
https://ru.wikipedia.org/wiki/XPath
Ответ написан
Комментировать
@sikret Автор вопроса
Спасибо за совет ! Я пробовал как Вы посоветовали getDriver().findElement(By.xpath(".//span[@class='button-text following-text']")).click(); но свалился на этом тест . Там просто кнопок "Following" много... какую именно оно должно было нажать и как нажать их все по очереди и проверить что они нажатые то есть тогда они "Unfollow" становятся.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы