无法解析功能:goog:chromeOptions 来自无效参数:无法识别的 chrome 选项:prefs

myt*_*lon 8 python webdriver python-3.x selenium-chromedriver selenium-webdriver

我正在尝试使用 Selenium WebDriver 和 ChromeDriver 连接到现有会话设置下载文件夹。由于某种原因,它总是失败并抛出以下错误:

\n
>>> from selenium import webdriver\n>>>\n>>> chromeOptions = webdriver.ChromeOptions()\n>>>\n>>> download_folder = "D:\\\\Test"\n>>> preferences = {\n... "download.default_directory" : download_folder\n... }\n>>> chromeOptions.add_experimental_option("prefs", preferences)\n>>> chromeOptions.add_experimental_option("debuggerAddress", "127.0.0.1:1111")\n>>>\n>>> chromeOptions.to_capabilities()\n{'browserName': 'chrome', 'version': '', 'platform': 'ANY', 'goog:chromeOptions': {'prefs': {'download.default_directory': 'D:\\\\Test'}, 'debuggerAddress': '127.0.0.1:1111', 'extensions': [], 'args': []}}\n>>>\n>>> driver_Chrome = "D:\\\\chromedriver.exe"\n>>> driver_Web = webdriver.Chrome(executable_path=driver_Chrome, chrome_options=chromeOptions)\nTraceback (most recent call last):\n  File "<stdin>", line 1, in <module>\n  File "C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\selenium\\webdriver\\chrome\\webdriver.py", line 76, in __init__\n    RemoteWebDriver.__init__(\n  File "C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py", line 157, in __init__\n    self.start_session(capabilities, browser_profile)\n  File "C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py", line 252, in start_session\n    response = self.execute(Command.NEW_SESSION, parameters)\n  File "C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\selenium\\webdriver\\remote\\webdriver.py", line 321, in execute\n    self.error_handler.check_response(response)\n  File "C:\\Users\\username\\AppData\\Local\\Programs\\Python\\Python38\\lib\\site-packages\\selenium\\webdriver\\remote\\errorhandler.py", line 242, in check_response\n    raise exception_class(message, screen, stacktrace)\nselenium.common.exceptions.InvalidArgumentException: Message: invalid argument: cannot parse capability: goog:chromeOptions\nfrom invalid argument: unrecognized chrome option: prefs\n
Run Code Online (Sandbox Code Playgroud)\n

\xc2\xa0

\n

但是,如果我删除其中任何一行chromeOptions.add_experimental_option,那么它就可以正常工作,这对我来说没有意义:

\n
>>> from selenium import webdriver\n>>>\n>>> chromeOptions = webdriver.ChromeOptions()\n>>>\n>>> download_folder = "D:\\\\Test"\n>>> preferences = {\n... "download.default_directory" : download_folder\n... }\n>>> chromeOptions.add_experimental_option("prefs", preferences)\n>>> # chromeOptions.add_experimental_option("debuggerAddress", "127.0.0.1:1111")\n>>>\n>>> chromeOptions.to_capabilities()\n{'browserName': 'chrome', 'version': '', 'platform': 'ANY', 'goog:chromeOptions': {'prefs': {'download.default_directory': 'D:\\\\Test'}, 'extensions': [], 'args': []}}\n>>>\n>>> driver_Chrome = "D:\\\\chromedriver.exe"\n>>> driver_Web = webdriver.Chrome(executable_path=driver_Chrome, chrome_options=chromeOptions)\n<stdin>:1: DeprecationWarning: use options instead of chrome_options\n\nDevTools listening on ws://127.0.0.1:4523/devtools/browser/e34332d4-50f0-4419-b9fb-37ede5f5602e\n>>>\n
Run Code Online (Sandbox Code Playgroud)\n
\n
>>> from selenium import webdriver\n>>>\n>>> chromeOptions = webdriver.ChromeOptions()\n>>>\n>>> download_folder = "D:\\\\Test"\n>>> preferences = {\n... "download.default_directory" : download_folder\n... }\n>>> # chromeOptions.add_experimental_option("prefs", preferences)\n>>> chromeOptions.add_experimental_option("debuggerAddress", "127.0.0.1:1111")\n>>>\n>>> chromeOptions.to_capabilities()\n{'browserName': 'chrome', 'version': '', 'platform': 'ANY', 'goog:chromeOptions': {'debuggerAddress': '127.0.0.1:1111', 'extensions': [], 'args': []}}\n>>>\n>>> driver_Chrome = "D:\\\\chromedriver.exe"\n>>> driver_Web = webdriver.Chrome(executable_path=driver_Chrome, options=chromeOptions)\n>>>\n
Run Code Online (Sandbox Code Playgroud)\n

\xc2\xa0

\n

我已经扩展了每个输出的“功能”,它们对我来说似乎很好:

\n
{\n    'browserName': 'chrome',\n    'version': '',\n    'platform': 'ANY',\n    'goog:chromeOptions': {\n        'prefs': {\n            'download.default_directory': 'D:\\\\Test'\n        },\n        'debuggerAddress': '127.0.0.1:1111',\n        'extensions': [],\n        'args': []\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n
\n
{\n    'browserName': 'chrome',\n    'version': '',\n    'platform': 'ANY',\n    'goog:chromeOptions': {\n        'prefs': {\n            'download.default_directory': 'D:\\\\Test'\n        },\n        'extensions': [],\n        'args': []\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

\xc2\xa0

\n

我的环境如下:

\n
    \n
  • Windows 10 版本 2004
  • \n
  • Python 64 位版本 3.8.4(最新)
  • \n
  • 硒版本 3.141.0(最新)
  • \n
  • Google Chrome 64 位版本 84.0.4147.89(最新),带参数打开--remote-debugging-port=1111
  • \n
  • Chrome驱动程序版本84.0.4147.30
  • \n
\n

我在网上找到的任何内容都没有帮助或解决了这个特定的情况。

\n

\xc2\xa0

\n

2020/09/07 23:26 更新:版本 85.0.4183.* 存在同样的问题。

\n

小智 1

也许您无法同时设置 debuggerAddress 和 download.default_directory,因为您不允许在正在运行的 chrome 实例上更改下载目录。

  • 必要时请提供明确的答案并附上正确的代码。如果您不确定,那么您可以尝试对问题发表评论 (2认同)