@CteplerMarinovich

Не работает метод .click() в библиотеке selenium, почему?

По туториалу написал вот такой код:
import time
from selenium import webdriver


browser = webdriver.Firefox()
browser.get('http://youtube.com')

xpath = '/html/body/ytd-app/div[1]/div/ytd-masthead/div[4]/div[3]/div[2]/ytd-button-renderer/yt-button-shape/a/yt-touch-feedback-shape/div/div[2]'
browser.find_element_by_xpath(xpath).click()


xpath хранит в себе полный xpath обьекта на стринце (кнопка "войти" на youtube.com)
страница открывается, но кнопка не нажимается, вернее сказать начинается бесконечная згрузка страницы.
Как это чинить ?
  • Вопрос задан
  • 857 просмотров
Пригласить эксперта
Ответы на вопрос 2
evgentor
@evgentor
Попробуйте это
from selenium import webdriver
from selenium.webdriver.common.by import By

browser.implicitly_wait(15) # Будет ждать 15 секунд до того, как элемент появиться на странице. Лучше позже заменить на WebDriverWait

browser.get('http://youtube.com')

xpath = '...'
browser.find_element(By.XPATH,xpath).click()

Так же, возможно вы указали неправильный Xpath. Замените поиск по By.Xpath на By.CSS_SELECTOR
Ответ написан
Комментировать
@duff89
При работе с защищенными сайтами "голый" selenium легко обнаруживается и не все сайты рады автоматизации. Можете попробовать undetected-chromedriver, такой вариант точно работает
import undetected_chromedriver as webdriver # pip install undetected-chromedriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get('http://youtube.com')

xpath = '/html/body/ytd-app/div[1]/div/ytd-masthead/div[4]/div[3]/div[2]/ytd-button-renderer/yt-button-shape/a/yt-touch-feedback-shape/div/div[2]'
browser.find_element(By.XPATH, xpath).click()
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы