Как нажимать несколько кнопок на веб-странице, не зная id или xpath с помощью Selenium (Python) - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь автоматизировать вход и отписку людей на сайте Depop.У меня возникли проблемы с нажатием всех кнопок «отписаться».Каждая из кнопок имеет свой идентификатор и класс, и единственное сходство между ними заключается в следующем HTML-коде:

<span> Following <span>

Можно ли нажать каждую кнопку с этим кодом HTMl?

IЯ уже пытался найти XPath для всех кнопок, но из-за того, что их так много, было бы трудно найти XPath для каждой кнопки.Я также попытался найти класс следующих кнопок, но они все разные.В селекторах css нет сходства.

Я пытался сделать что-то подобное, но безуспешно.

driver.get_attribute('<span> Following </span>').click()

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

1 Ответ

0 голосов
/ 11 мая 2019

Вот логика.

unfollows = driver.find_elements_by_xpath("//span[normalize-space(.)='Following']")
for btn in unfollows:
    btn.click()

Если вы получаете исключение staleElement с вышеуказанным подходом, то вы должны следовать следующему подходу.

while len(driver.find_elements_by_xpath("//span[normalize-space(.)='Following']"))>0:
    btn = driver.find_element_by_xpath("(//span[normalize-space(.)='Following'])[1]")
    btn.location_once_scrolled_into_view
    driver.execute_script("arguments[0].click();",btn)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...