Как кликнуть по елементу на странице поиска google с помощью Selenium Python?
Доброго времени суток!
Столкнулся с очень простой на первый взгляд проблемой,
но уже которое время не могу ее решить и прошу вас о помощи.
Работаю с Selenium на Python и мне нужно прокликать примерно
20 элементов на поисковой странице google по рандомному запросу.
Приложу пример элементов ниже, суть в том что после раскрытия елементов
Гугл генерирует новые такие элементы
Проблема:
Не удается кликнуть по елементу. Мне нужно будет кликать по существующим и потом по новым, сгенерированым елементам в этом блоке:

Пробовал кликать по xpath, собрав все елементы:
xpath = '//*[@id="qmCCY_adG4Sj3QP025p4__16"]/div/div/div[1]/div[4]'
all_elements = driver.find_element(By.XPATH, value=xpath)
for element in all_elements:
element.click()
sleep(2)
Важное замечание!
id у xpath постоянно меняется и генерируется другой на стороне google
Пробовал кликать по класу
class="r21Kzd"
Пробовал кликать по селектору:
#qmCCY_adG4Sj3QP025p4__16 > div > div > div.wWOJcd > div.r21Kzd
Ошибки
Это когда пытаюсь кликать с помощью xpath:
Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="vU-CY7u3C8PIrgTuuJH4CQ__9"]/div/div/div[1]/div[4]"}
В остальных случаях история почти такая же, драйвер не находит елемент и не может по нему кликнуть. Ниже прикладываю скрин тега по которому мне нужно кликнуть
Спасибо за помощь!
Ответы (1 шт):
Указанный Вами XPATH не постоянный, и меняется при каждой перезагрузке страницы, попробуйте убедитесь сами, и поэтому он отваливается по "no such element: Unable to locate element". Вам нужно прописать стабильный XPATH, и не указывать в них названия по типу "qmCCY_adG4Sj3QP025p4__16", т.к. они сделаны специально от таких трудяг как мы...
Потом Вы указали "find_element", обратите внимание если Вы хотите перебрать элементЫ, то используйте "find_elementS"
Также пытайтесь зацепиться за слово, которое 100% ожидаете, например на текущей странице
//*[.='Доброго времени суток!']
Если напишите каким был запрос в поиске google, напишу XPATH для Вашей задачи ;)