Я пытаюсь войти в Gmail с помощью selenium webdriver.
Следующий код работает без опции headless, и я могу успешно войти:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions()
options.add_argument(" — incognito")
loadtime = 4.0
try:
browser = webdriver.Chrome(chrome_options=options)
except:
browser = webdriver.Chrome('./chromedriver', chrome_options=options)
gmail_link = 'https://accounts.google.com/signin'
browser.get(gmail_link)
email = WebDriverWait(browser, loadtime).until(EC.visibility_of_element_located((By.ID, "identifierId")))
email.send_keys('my_email')
nextButton = WebDriverWait(browser, loadtime).until(lambda x: x.find_element_by_id('identifierNext'))
nextButton.click()
password = WebDriverWait(browser, loadtime).until(
EC.element_to_be_clickable((By.XPATH, "//input[@name='password']"))
)
password.send_keys('my_password')
browser.find_element_by_id("passwordNext").click()
Но если я добавлю следующую опцию , он просто не может найти элемент электронной почты и выдает тайм-аут.
options.add_argument('--headless')
Прежде чем вы отметите этот вопрос как повторяющийся (я знаю, что есть много других похожих вопросов, но ни один из них мне не помог):
Я хотел бы упомянуть, что это работает для других веб-сайтов, например, я могу go войти в facebook и войти в систему с опцией «Без головы». Но похоже, что по какой-то причине поле электронной почты не отображается для Gmail с опцией без заголовка.
Таким образом, эта проблема похожа на специфику gmail c.
Так выглядит поле электронной почты в Gmail при проверке:
Есть идеи, как решить эту проблему?