我尝试使用Selenium WebDriver和ChromeDriver连接到现有会话并设置下载文件夹。由于某些原因,它总是失败并抛出以下错误:
>>> from selenium import webdriver
>>>
>>> chromeOptions = webdriver.ChromeOptions()
>>>
>>> download_folder = "D:\\Test"
>>> preferences = {
... "download.default_directory" : download_folder
... }
>>> chromeOptions.add_experimental_option("prefs", preferences)
>>> chromeOptions.add_experimental_option("debuggerAddress", "127.0.0.1:1111")
>>>
>>> chromeOptions.to_capabilities()
{'browserName': 'chrome', 'version': '', 'platform': 'ANY', 'goog:chromeOptions': {'prefs': {'download.default_directory': 'D:\\Test'}, 'debuggerAddress': '127.0.0.1:1111', 'extensions': [], 'args': []}}
>>>
>>> driver_Chrome = "D:\\chromedriver.exe"
>>> driver_Web = webdriver.Chrome(executable_path=driver_Chrome, chrome_options=chromeOptions)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\username\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 76, in __init__
RemoteWebDriver.__init__(
File "C:\Users\username\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "C:\Users\username\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "C:\Users\username\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\username\AppData\Local\Programs\Python\Python38\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: cannot parse capability: goog:chromeOptions
from invalid argument: unrecognized chrome option: prefs
然而,如果我删除其中一行chromeOptions.add_experimental_option
,它就可以正常工作,但这对我来说没有意义:
x一个一个一个一个x一个一个二个x
我已经扩展了每个输出的"功能",它们看起来不错:
一个三个三个一个
我的环境如下:
- Windows 10版本2004
- Python 64位版本3.8.4(最新版本)
- Selenium版本3.141.0(最新)
- Google Chrome 64位版本84.0.4147.89(最新版本),使用参数
--remote-debugging-port=1111
打开 - Chrome驱动程序版本84.0.4147.30
我在网上找到的任何东西都没有帮助,也没有关于这个特殊情况的。
- 更新日期:2020年9月7日23:26:**版本85.0.4183. * 存在相同问题。
4条答案
按热度按时间fdbelqdn1#
免责声明:这是一个适合我需要的变通方案。这可能不会对每个人都有帮助。
我想从一个受SSO保护的网站上捕获PDF格式的数据,但事实证明,要弄清楚如何进行身份验证才能查看所需的页面,既麻烦又耗时。
因此,使用debuggerAddress登录到运行chrome示例,我已经登录到SSO。
但遇到与OP相同的问题,尝试调用
add_experimental_option
两次,一次用于设置debuggerAddress,另一次用于设置"prefs"中的打印首选项。1.仅调用
add_experimental_option
一次以 * 设置首选项 * 和 * 删除调用 * 来设置debuggerAddress
。1.添加睡眠
time.sleep(60)
至少一分钟1.此时,通过脚本启动chrome示例中的SSO登录。
1.睡眠完成后,Selenium脚本可以使用
driver.get(url)
导航到所需的安全网站nqwrtyyt2#
也许你不能同时设置debuggerAddress和download.default_directory,因为你不允许在运行的chrome示例上的下载目录中进行更改。
siotufzp3#
e1xvtsh34#
有点晚了,但这可能对其他人有用。实际上,你可以设置调试器地址和下载目录,但不能在同一个选项中。你可以使用两种类型的选项来初始化驱动程序。
我已经安装了
selenium 4.2.0
,这对我来说在Windows上是有效的。