0%

解决Chrome浏览器更新后导致Selenium无法使用问题

问题描述

Selenium是一个自动化测试工具,它支持各种浏览器和平台。由于它能够模拟用户的浏览器操作,因此也被广泛用于网络爬虫领域,尤其是那些需要执行JavaScript、处理复杂交互或模拟用户行为的场景。

尽管使用Selenium在网络爬虫方面有很多优势,但是要想使用Selenium去驱动浏览器操作,还必须要使用相应浏览器的驱动程序,例如:以Chrome浏览器为例,要想使用Selenium去操作Chrome浏览器,除了要下载浏览器之外,还需要准备相适应的ChromeDriver驱动软件。

这个时候就会出现一个问题,由于电脑的Chrome会一直进行自动更新,而ChromeDriver驱动软件是自己额外下载的,它不会随着浏览器的升级而升级,所以这个时候就会导致ChromeChromeDriver之间不适配,从而导致Selenium无法驱动Chrome,并且ChromeDriver更新的速度远远跟不上Chrome更新的速度。这个问题一直都困扰着很多的网络爬虫工作者和初学者。

基于此,本博文提出了一种一劳永逸的配置方法,使得在使用Selenium不用被Chrome自动更新带来的版本问题所困扰。

解决问题的方式,使用Chrome开发者版本Chromium去替代自带的Chrome浏览器。

操作流程

下载Chromium和ChromeDriver

进入网址:https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html

该网址可能需要科学上网才可以访问,大家也可以直接使用我提供的百度云网盘链接去下载:

链接:https://pan.baidu.com/s/1vEJio1Ulb2axoI0w7Q4dtw?pwd=ming

直接使用百度网盘中的文件,可以跳过下载安装过程,直接执行网盘中的测试脚本。

找到自己的电脑操作系统,例如Win_64

image-20240415201859718

随便选择一个版本进行下载,例如

image-20240415201927582

选择chrome-win.zipchromedriver_win32.zip进行下载

image-20240415202153644

下载完后解压相应压缩包

chrome-win.zip解压后即可得到一个chrome-win文件夹,该文件夹即是离线的开发者版本Chromium,可以直接打开文件夹下的chrome.exe可执行文件开启Chromium

image-20240415202412673

接下来将chromedriver_win32.zip压缩包下的chromedriver.exe解压到chrome-win文件夹。

image-20240415202521706

在Selenium中配置chrome和chromedriver

chrome-win同级目录下创建测试脚本test_selenium.py

image-20240415202932498

使用以下代码设置Selenium使用的ChromeChromeDriver

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time

# Chrome浏览器的可执行文件路径
chrome_executable_path = 'chrome-win/chrome.exe'
# ChromeDriver的路径
chrome_driver_path = 'chrome-win/chromedriver.exe'

# 设置Chrome选项
chrome_options = Options()
chrome_options.add_argument('--no-sandbox') # 禁用沙箱功能
chrome_options.add_argument('--disable-dev-shm-usage') # 禁用共享内存
chrome_options.binary_location = chrome_executable_path

# 创建WebDriver实例
driver = webdriver.Chrome(executable_path=chrome_driver_path, options=chrome_options)

# 访问页面
driver.get('https://www.baidu.com')

time.sleep(5) # 停顿5s查看网页,5s后自动退出

成功驱动Chromium访问百度。

image-20240415202938646

至此,再也不用受Chrome浏览器更新的影响了,并且只需要将chrome-win文件夹保存下来,都不需要计算机中存在Chrome浏览器,极大降低了Selenium使用门槛。

-------------本文结束感谢您的阅读-------------