前因:
新版selenium (截至2024.3.25) 会自动下载并载入webDriver,不需要以前的手动加载,但这个自动载入功能也带来了一些问题。
以Chrome为例子, 新旧写法代码如下:
# 旧版写法
driver = webdriver.Chrome("此处为webDriver文件目录")
# 新版写法
driver = webdriver.Chrome()
新版selenium会自动将webDriver下载到C:\Users\用户名\.cache\selenium\chromedriver\win64或32\浏览器版本号\chromedriver.exe目录下
每隔久一点启动或缓存被清理后, selenium就会检查webDriver更新并重新下载,重新下载的过程中程序无法运行,而且由于网络问题,重新下载webDriver往往要花费极长的时间,用户体验非常差。
解决:
使用selenium中的service类手动加载webDriver即可避免每次重新下载webDriver更新。
第一步:在Chrome for Testing availability网站下载对应Chrome版本的chromedriver(其他浏览器如Edge请自行解决),举例,我的电脑安装的是windows 64位的稳定版123版本Chrome就找到 123.0.6 + stable + win64 然后复制右边的下载链接进行下载
然后把chromedriver.exe文件放在随便哪个目录下 (我放在了项目目录下, 并根据版本号和系统进行了重命名为了chromedriver_123.0.6312.58_x64.exe这样方便以后判断要不要更新webDriver)
参照以下代码用service加载驱动即可
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# 填写chromedriver的目录, 此处使用了相对路径
service = Service('./chromedriver_123.0.6312.58_x64.exe')
driver = webdriver.Chrome(service=service)
driver.get("https://www.baidu.com")