Selenium + Headless Chrome, YouTube не подключается к учетной записи после отправки учетных данных
В образовательных целях я решил создать на YouTube некоторый сценарий автоматизации (который не может быть реализован с помощью API из-за некоторого переключения каналов).
Я использую Selenium и Headless Chrome. Мой скрипт работает нормально, когда я установил все на headless-false
, но это потому, что я могу импортировать user-data-dir
, что позволяет мне избежать петли входа в систему, через которую я захожу в процессе входа в систему.
Итак, я начал следить за тем, что происходит с false без заголовка, когда я не импортирую свои данные, и кажется, что по каким-либо причинам он не хочет входить в систему.
Проблема не в том, что я не могу ввести свои учетные данные в поля логина и пароля, а просто в YouTube, когда я не вхожу в систему после отправки учетных данных.
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
options = webdriver.ChromeOptions()
#options.add_argument("user-data-dir=Admin$ /Users/Admin/Library/Application\ Support/Google/Chrome/Profile\ 30")
options.add_argument("window-size=1440,900")
options.add_argument('headless-false')
# launching the driver
driver = webdriver.Chrome(chrome_options=options)
# entering credentials
driver.get('https://www.youtube.com/')
time.sleep(1)
driver.find_element_by_xpath('//div[2]/ytd-button-renderer/a/paper-button/yt-formatted-string').click()
time.sleep(1)
email = driver.find_element_by_css_selector('input[type=email]')
email.send_keys('myemail@gmail.com')
print("Email entered")
driver.find_element_by_id("identifierNext").click()
time.sleep(1)
password = driver.find_element_by_css_selector('input[type=password]')
password.send_keys('mypassword')
print("Password entered")
driver.find_element_by_id("passwordNext").send_keys(Keys.ENTER)
print("Logged in!")
По какой-то причине, когда он возвращается на YouTube после входа в систему, канал все еще не вошел в систему. Я пробовал много разных способов, таких как попытка пройти через мобильный сайт YouTube, сначала войти в gmail и затем получить доступ к YouTube, но ничего не происходит сделать.
Я также знаю, что с помощью sleep ()
не очень хороший способ сделать это, и что я мог бы использовать некоторые implicit wait
вместо этого, но я хочу сначала исправить основную проблему, прежде чем настраивать ее целиком.
0 ответов
Я думаю, что это не сработает, потому что youtube видит, что процесс входа в систему выполняется из безголового браузера /selenium webdriver, и отрицает это. Та же проблема с www.google.com (см. https://gist.github.com/ikegami-yukino/51b247080976cb41fe93)