正如标题所说,我在谷歌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")
然而,我建议不要依赖自动完成来进行自动测试。您最好在命令行、通过环境变量或通过配置文件传递用户名/密码信息。