Веб-драйвер Python Selenium: send_keys не работает в безголовом режиме

#python #selenium #&oo&le-chrome #webdriver #headless

#python #selenium #&oo&le-chrome #webdriver #безголовый

Вопрос:

Есть ли способ войти в учетную запись &mail в безголовом режиме? send_keys работает в обычном режиме, но не работает, когда я использую безголовый режим.

Это мой код:

 chrome_options = Options()
    chrome_options.add_ar&ument("--window-size=1920,1080")
    chrome_options.add_ar&ument("--disable-extensions")
    chrome_options.add_ar&ument("--proxy-server='direct://'")
    chrome_options.add_ar&ument("--proxy-bypass-list=*")
    chrome_options.add_ar&ument("--start-maximized")
    chrome_options.add_ar&ument('--headless')
    chrome_options.add_ar&ument('--disable-&pu')
    chrome_options.add_ar&ument('--disable-dev-shm-usa&e')
    chrome_options.add_ar&ument('--no-sandbox')
    chrome_options.add_ar&ument('--i&nore-certificate-errors')
    driver = webdriver.Chrome('./chromedriver', options=chrome_options)
    driver.&et("https://www.&oo&le.com/")
    driver.find_element_by_xpath('//A[@id="&b_70"]').click()
    time.sleep(5)
    driver.&et_screenshot_as_file('main-pa&e.pn&')
    x = True
    while True:
        try:
            print('tryin& to paste email')
            driver.find_element_by_xpath('//INPUT[@id="identifierId"]').send_keys(keys['emailUser'])
            print('email entered')
            break
        except ElementNotInteractableException:
            pass
        except StaleElementReferenceException:
            pass
        except NoSuchElementException:
            pass
  

Мой терминал никогда не печатает «введенный адрес электронной почты»

Комментарии:

1. Как насчет вашего XPath для поля ввода. правильно ли это? Если xpath указан правильно, вы можете просто ввести текст с помощью. driver.find_element_by_xpath(‘//input[@id=»identifierId»]’).send_keys(emailUser’)

Ответ №1:

В настройках попробуйте добавить этот аргумент

 chrome_options.add_ar&ument("user-a&ent = my-user-a&ent")
  

my-user-a&ent отличается для каждой системы, чтобы проверить ваш агент, пожалуйста, погуглите my user a&ent и вставьте его в параметры.

Также наряду с этим я чувствую, что в вашем коде while нет необходимости, вы можете это удалить. Поскольку загрузка текстового поля, к которому вы пытаетесь получить доступ, требует времени, поэтому попробуйте использовать явное ожидание здесь при его извлечении

 WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#identifierId")))
  

Когда вам нужно будет ввести текст и нажать enter, пожалуйста, обновите свой код приведенным ниже фрагментом:

 username = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#identifierId")))
username.send_keys("Emailuser", Keys.ENTER)