如何使用 Selenium Python 将所需的功能传递给未检测到的 Chromedriver?

Gam*_*r01 6 python selenium python-3.x selenium-webdriver undetected-chromedriver

我正在使用 Python 包未检测到的 Chromedriver,因为我需要能够使用 webdriver 登录 Google 帐户,并且我想将选项传递{"credentials_enable_service": False, "profile.password_manager_enabled": False}给驱动程序,这样它就不会弹出保存密码的弹出窗口。我试图使用以下方法传递这些选项:

import undetected_chromedriver.v2 as uc

uc_options = uc.ChromeOptions()
uc_options.add_argument("--start-maximized")
uc_options.add_experimental_option("prefs", {"credentials_enable_service": False, "profile.password_manager_enabled": False})

driver2 = uc.Chrome(options=uc_options)
Run Code Online (Sandbox Code Playgroud)

这个参数--start-maximized工作得很好,如果我运行代码,它就会按预期最大化。但是,当添加实验选项并运行代码时,它会返回错误:

selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: cannot parse capability: goog:chromeOptions
from invalid argument: unrecognized chrome option: prefs
Run Code Online (Sandbox Code Playgroud)

所以我想我应该尝试将参数作为所需的功能传递,从而编写代码:

import undetected_chromedriver.v2 as uc

uc_options = uc.ChromeOptions()
uc_options.add_argument("--start-maximized")
uc_options.add_experimental_option("prefs", {"credentials_enable_service": False, "profile.password_manager_enabled": False})
uc_caps = uc_options.to_capabilities()

driver2 = uc.Chrome(desired_capabilities=uc_caps)
Run Code Online (Sandbox Code Playgroud)

虽然此代码运行并且不会生成任何错误,但它也根本不执行任何操作。密码弹出窗口仍然显示,驱动程序甚至没有启动最大化,尽管后一部分可以作为一个选项。

所以我的问题是:如何正确地将所需的功能传递给未检测到的 Chromedriver?或者,或者:如何正确地将实验选项传递给未检测到的 Chromedriver?

Mic*_*ntz 2

今年早些时候,进行了一些更改来解决此问题并允许首选项:

https://github.com/ultrafunkamsterdam/unDetected-chromedriver/issues/524

有关提交,请参阅https://github.com/ultrafunkamsterdam/unDetected-chromedriver/commit/487969811851be6bcf6e3c55c8fc0d471940c6c3 。

为了处理首选项,对https://github.com/ultrafunkamsterdam/unDetected-chromedriver/blob/master/unDetected_chromedriver/options.py进行了重要更新。

升级到新版本以解决您的问题。