如何使用Selenium而不频繁遇到ChromeDriver版本错误?

1 投票
2 回答
101 浏览
提问于 2025-04-14 17:33

现在有没有办法在我运行Selenium脚本时自动安装正确版本的ChromeDriver呢?

今天我遇到了一个关于ChromeDriver和Chrome版本的错误。为了修复这个问题,我搞得一头雾水,卸载了又安装,环境也换了,浪费了很多时间。最后的问题其实很简单,只是去这里下载最新的ChromeDriver版本就解决了(这其实是我最开始尝试的,但我发誓第一次检查时版本号是一样的)。

在我搜索的过程中,发现了一个叫webdriver-manager的包,看起来很有用,但我在安装时遇到了麻烦,也不确定它是否应该和最新版本的Selenium一起使用(我现在用的是4.18.0)。我大约每个月运行一次这个代码,之前也遇到过版本问题,所以如果有一种间接的方法可以访问ChromeDriver,而不需要每次新版本出来都自己下载,那就太好了。

这是我目前使用的代码,其中chromedriver_path_variable指向我电脑上ChromeDriver的本地安装路径。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

#Set up webdriver to read page
option = webdriver.ChromeOptions()
option.add_argument('--headless')
option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")
service = Service(executable_path=chromedriver_path_variable)
driver = webdriver.Chrome(service=service, options=option)

2 个回答

0

你可以使用 webdriver-manager 这个库来完成这个任务。

首先,你需要运行 pip install webdriver-manager 来安装它。

在这个情况下,webdriver manager 会自动安装最新版本的 chromedriver。这个例子应该可以正常工作。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager

option = webdriver.ChromeOptions()
option.add_argument("--headless")
option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")

driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install(), option=option))
0

安装 pip install webdriver-manager 这个命令就可以了,之后你就可以开始使用了!

    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from webdriver_manager.chrome import ChromeDriverManager
    from selenium.webdriver.chrome.options import Options
    import time 
    
    # Set up WebDriver options
    options = Options()
    options.add_argument('--headless') 
    option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36")

    # Use webdriver_manager to automatically install the correct ChromeDriver
    driver_service = Service(ChromeDriverManager().install())
    
    # Set up the WebDriver
    driver = webdriver.Chrome(service=driver_service, options=options)
    
    driver.get("https://twitter.com/home")
    time.sleep(10) # Wait for 10 seconds

撰写回答