Selenium Python - Chrome 在无头模式下不会自动填充用户名和密码字段



正如标题所说,我在谷歌Chrome的自动填充功能方面遇到了问题。当我在没有--headless参数的情况下运行Python脚本时,一切都很顺利:用户名和密码字段都由Chrome自动填写,我可以登录。然而,当我尝试在无头模式下运行Chrome时,它什么也做不了。有没有办法解决/规避这个问题?我想过只使用send_keys(),但我不想把我的电子邮件和密码放在电脑上的脚本中。非常感谢。

[编辑]

这是我登录的代码:

login = WebDriverWait(driver, 10).until( 
EC.element_to_be_clickable((By.ID, 'login-button')) 
) 
driver.find_element_by_id('login-button').click()

我只是等待元素变得可点击,然后点击它。正如我之前所说,当我在无头模式下而不是时,这完全有效,但当我激活它时会中断,因为Chrome不会自动填充用户名和密码。

[编辑2]

我已经传递了用户数据目录。一切都很好。问题是,当我添加--headless参数时,它会自动停止粘贴凭据。

您需要传入具有自动完成信息的用户的配置文件。

以下是可能有所帮助的答案:https://stackoverflow.com/a/52399027/1387701

具体而言:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = webdriver.ChromeOptions()
options.add_argument("user-data-dir=C:\Users\AtechM_03\AppData\Local\Google\Chrome\User Data\Default")
driver = webdriver.Chrome(executable_path=r'C:pathtochromedriver.exe', chrome_options=options)
driver.get("https://www.google.com")

然而,我建议不要依赖自动完成来进行自动测试。您最好在命令行、通过环境变量或通过配置文件传递用户名/密码信息。

最新更新