Python Selenium Web驱动程序:send_keys在无头模式下不起作用

问题描述

有没有办法以无头模式登录Gmail帐户? send_keys在正常模式下可以使用,但是在使用无头模式时不能使用。

这是我的代码:

chrome_options = Options()
    chrome_options.add_argument("--window-size=1920,1080")
    chrome_options.add_argument("--disable-extensions")
    chrome_options.add_argument("--proxy-server='direct://'")
    chrome_options.add_argument("--proxy-bypass-list=*")
    chrome_options.add_argument("--start-maximized")
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--ignore-certificate-errors')
    driver = webdriver.Chrome('./chromedriver',options=chrome_options)
    driver.get("https://www.google.com/")
    driver.find_element_by_xpath('//A[@id="gb_70"]').click()
    time.sleep(5)
    driver.get_screenshot_as_file('main-page.png')
    x = True
    while True:
        try:
            print('trying 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

我的终端从不打印“输入的电子邮件”

解决方法

在选项中尝试添加此参数

chrome_options.add_argument("user-agent = my-user-agent")

my-user-agent对于每个系统都是不同的,请检查您的代理商Google my user agent并将其插入选项中。

与此同时,我觉得在您的代码中,while是不必要的,您可以删除它。 由于您尝试访问的文本框需要花费一些时间才能加载,因此请在提取文本框时尝试在此处使用显式等待

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

当您必须输入文本并按Enter时,请使用以下代码段更新代码:

username = WebDriverWait(driver,"#identifierId")))
username.send_keys("Emailuser",Keys.ENTER)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...