无法使用Selenium Manager获取chromedriver

3

我在我的Jupyter笔记本上尝试编写这段代码,但它显示了错误。我的目标是进行网页抓取。

driver = webdriver.Chrome(ChromeDriverManager().install())

输入图像描述

我还使用pip安装了selenium和webdriver-manager。


请问你能展示更多的代码吗? - Lara19
请问你能展示更多的代码吗? - undefined
3个回答

3

ChromeDriverManager().install()的输出是一个executable_path到驱动程序,但是executable_pathselenium 4.10.0中被移除了。这就是为什么在将该值传递给webdriver.Chrome()之后您会看到错误。以下是更改内容:
https://github.com/SeleniumHQ/selenium/commit/9f5801c82fb3be3d5850707c46c3f8176e3ccd8e

Changes_in_selenium_4_10_0

请注意,已经删除了 executable_path。如果您想传入一个 executable_path,现在您必须使用 service 参数。(service=Service(executable_path='./chromedriver'))但是 Selenium Manager 现在完全包含在 selenium 4.10.0 中,所以这是您所需的全部内容。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

service = Service()
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
# ...
driver.quit()

如果在您的系统路径中找不到驱动程序,Selenium Manager将自动为您下载它。

1
请尝试移除ChromeDriverManager,如果您的 Selenium 版本为v4.6.0或更高,则不需要它。
进行以下更改:
driver = webdriver.Chrome(ChromeDriverManager().install())

致:

driver = webdriver.Chrome()

介绍Selenium Manager


1

Selenium 管理器

Selenium Manager是一个新工具,它帮助获取所需的浏览器驱动程序,以便开箱即用地运行Selenium。Selenium Manager的Beta 1版本会为Chrome、Firefox和Edge配置浏览器驱动程序,如果它们未在PATH中存在。因此,要使用Selenium 4.6及更高版本运行Selenium测试,您只需要安装。如果您已经安装了浏览器驱动程序,则该功能将被完全忽略。


当前状态

Selenium Manager 工具仍处于测试阶段,Selenium 正逐步增加对该功能的支持。当前的实现是一个备用选项,这意味着只有在代码执行失败时才会使用它。只要您在适当的Service类中指定驱动程序的位置(或者在 Java 中使用System Properties),将不会使用 Selenium Manager。


解决方案

有两种不同的方法如下:

  • 您完全可以避免使用webdriver-manager,您的有效代码块将是:

    driver = webdriver.Chrome()
    
  • 要继续使用webdriver-manager,您需要使用Service类,并且您的有效代码块将是:

    driver = webdriver.Chrome(service=ChromeDriverManager().install())
    

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