python爬虫报错:This version of ChromeDriver only supports Chrome version 114

使用selenium爬取网页数据,一运行程序就报错:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 114

Current browser version is 117.0.5938.149 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe

就很奇怪,之前都是没问题的,今天就不行了,查了网上的资料说是浏览器升级了,跟selenium的浏览器驱动不一致造成的,解决办法就是:

1)换浏览器版本;

2)换浏览器驱动版本;

第一种感觉不靠谱,后面浏览器自动升级了还得出现这个问题;所以就用第二种,参考网上的说法,去CNPM Binaries Mirror这里下载浏览器对应的驱动,可是我的浏览器是117版本的,这里面根本找不到

要正确解决这个问题,一个好方法是使用WebDriverManager库。它是一个开源的Java库,以完全自动化的方式执行Selenium WebDriver所需的驱动程序的管理(即下载、设置和维护)。其最新版本提供了其他相关功能,如发现本地系统中安装的浏览器的能力,无缝运行Docker容器中的浏览器,以及监控能力,废话不多说,直接上代码。

1、添加maven依赖

在java项目中添加如下依赖(我的是springboot项目):

XML 复制代码
        <dependency>
			<groupId>org.seleniumhq.selenium</groupId>
			<artifactId>selenium-java</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>io.github.bonigarcia</groupId>
			<artifactId>webdrivermanager</artifactId>
			<version>5.5.3</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.httpcomponents.client5</groupId>
			<artifactId>httpclient5</artifactId>
			<version>5.2.1</version>
			<scope>test</scope>
		</dependency>

2、使用

新建一个WebDriverManagerTests测试类

XML 复制代码
import io.github.bonigarcia.wdm.WebDriverManager;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

/**
 * @description:
 * @author: ndf
 * @create: 2023-10-30 11:29
 **/
public class WebDriverManagerTests {

    static WebDriver browser;

    @BeforeAll
    static void setup() {

        WebDriverManager.chromedriver().setup();

        ChromeOptions options = new ChromeOptions();
        options.setHeadless(false);
        options.addArguments("start-maximized"); // open Browser in maximized mode
        options.addArguments("disable-infobars"); // disabling infobars
        options.addArguments("--disable-extensions"); // disabling extensions
        options.addArguments("--disable-gpu"); // applicable to Windows os only
        options.addArguments("--disable-dev-shm-usage"); // overcome limited resource problems
        options.addArguments("--no-sandbox"); // Bypass OS security model
        options.addArguments("--disable-in-process-stack-traces");
        options.addArguments("--disable-logging");
        options.addArguments("--log-level=3");
        options.addArguments("--remote-allow-origins=*");

        browser = new ChromeDriver(options);
    }

    @Test
    @DisplayName("The google.com web site should have the correct title")
    void testProjectWebSiteShouldHaveCorrectTitle() {
        browser.get("https://google.com/");
        Assertions.assertEquals("Google", browser.getTitle());
    }
}

执行上面代码后,setup()方法会尝试查找机器上安装的浏览器版本。然后,使用浏览器版本,它试图通过各种方法找到合适的驱动程序版本。一旦发现驱动程序版本,WebDriverManager会将驱动程序下载到本地缓存(位于~/.cache/selenium/)。在控制台也可看到打印日志:

类似地,我们可以使用以下语句之一来设置Firefox、Edge、Opera、Chromium和Internet Explorer的驱动程序,如下所示 :

java 复制代码
WebDriverManager.firefoxdriver().setup();
WebDriverManager.edgedriver().setup();
WebDriverManager.operadriver().setup();
WebDriverManager.chromiumdriver().setup()
WebDriverManager.iedriver().setup();

3、修改驱动路径

修改Python代码,添加executable_path参数,指定浏览器驱动路径

python 复制代码
browser = webdriver.Chrome(executable_path=r'C:\Users\Administrator\.cache\selenium\chromedriver\win64\117.0.5938.149\chromedriver.exe',options=chrome_options)

运行程序,OK,大功告成!

注意: 在第2步中,运行java代码下载浏览器驱动这里,可能要爬梯到外网,反正我是开了vpn的!!!

相关推荐
Jay Kay38 分钟前
TensorFlow源码深度阅读指南
人工智能·python·tensorflow
q5673152343 分钟前
R语言初学者爬虫简单模板
开发语言·爬虫·r语言·iphone
会的全对٩(ˊᗜˋ*)و1 小时前
【数据挖掘】数据挖掘综合案例—银行精准营销
人工智能·经验分享·python·数据挖掘
___波子 Pro Max.1 小时前
GitHub Actions配置python flake8和black
python·black·flake8
阿蒙Amon2 小时前
【Python小工具】使用 OpenCV 获取视频时长的详细指南
python·opencv·音视频
橘子编程3 小时前
Python-Word文档、PPT、PDF以及Pillow处理图像详解
开发语言·python
蓝婷儿3 小时前
Python 机器学习核心入门与实战进阶 Day 2 - KNN(K-近邻算法)分类实战与调参
python·机器学习·近邻算法
之歆4 小时前
Python-封装和解构-set及操作-字典及操作-解析式生成器-内建函数迭代器-学习笔记
笔记·python·学习
天天爱吃肉82184 小时前
ZigBee通信技术全解析:从协议栈到底层实现,全方位解读物联网核心无线技术
python·嵌入式硬件·物联网·servlet
Allen_LVyingbo5 小时前
Python常用医疗AI库以及案例解析(2025年版、上)
开发语言·人工智能·python·学习·健康医疗