使用Webdriver Manager for Python时出现Selenium ChromeDriver问题

5
当运行以下代码时:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from webdrivermanager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().download_and_install())
driver.get("http://www.python.org")

这导致在安装chromedriver的行出现以下异常: TypeError: 期望字符串、字节或os.PathLike对象,而不是元组。
请注意,我知道已经有很多关于这个主题的讨论线程,但由于webdrivermanager似乎已经进行了重大更新,以前的解决方案不起作用。
还有一个快速的侧面说明:我通过conda而不是pip安装了webdrivermager,但这不应该成为问题。
编辑:整个堆栈跟踪:
3个回答

5
你的代码块中有两个问题,如下所示:
  • 你需要从webdriver_manager.chrome导入ChromeDriverManager
  • 根据Python的Webdriver Manager,不支持download_and_install()方法,你需要使用install()方法。
因此,你有效的代码块将会是:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("http://www.python.org")

系统上,控制台输出将是:
C:\Users\Admin\Desktop\Python Programs>python webdriver-manager_ChromeDriverManager.py
[WDM] -

[WDM] - ====== WebDriver manager ======
[WDM] - Current google-chrome version is 95.0.4638
[WDM] - Get LATEST driver version for 95.0.4638
[WDM] - There is no [win32] chromedriver for browser 95.0.4638 in cache
[WDM] - Get LATEST driver version for 95.0.4638
[WDM] - Trying to download new driver from https://chromedriver.storage.googleapis.com/95.0.4638.54/chromedriver_win32.zip
[WDM] - Driver has been saved in cache [C:\Users\Admin\.wdm\drivers\chromedriver\win32\95.0.4638.54]

DevTools listening on ws://127.0.0.1:50921/devtools/browser/c26df2aa-67aa-4264-b1dc-34d6148b9174

您可以在ModuleNotFoundError: No module named 'webdriver_manager' error even after installing webdrivermanager中找到相关的详细讨论。

你尝试使用conda还是pip了吗?Conda无法安装webdriver-manager,但只能安装webdrivermanager,而该软件包仅包含download_an_install函数,而不是常规的install函数。 - Stefan
请查看以下链接中的讨论:https://dev59.com/IVIG5IYBdhLWcg3wqTbe。无论您是通过pip/conda安装,都不应该有影响。但是请先执行`pip install webdriver_manager,然后再执行from webdriver_manager.chrome import ChromeDriverManager`。 - undetected Selenium

3
这是我的解决方案:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

options = webdriver.ChromeOptions()
s = Service('chromedriver/chromedriver96.exe')
driver = webdriver.Chrome(service=s, options=options)

3
  1. 安装Python的Webdriver Manager: pip install webdriver-manager
  2. 导入ChromeDriverManager: from webdriver_manager.chrome import ChromeDriverManager
  3. 使用webdriver: service = ChromeService(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service=service)

ChromeService是从Python中导入的任何东西。在Python中,必须先导入任何内容。 - Mahmoud Magdy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接