我发现,我的电脑对谷歌浏览器的禁止自动更新无效,哪怕是在任务计划程序里,禁止谷歌浏览器更新,也没有用。而且有时候点开右上角的三个点,也会自动更新版本。
但是往往chromedriver的更新版本更不上浏览器的版本哇,更不用说访问chromedriver 的网站总会遇到这个问题:
所以用selenium驱动的时候,就会出现下面的问题:
SessionNotCreatedException: session not created: This version of chromeDriver only supports chrome version 112version is 122.0.6261.70 with binary path c:\Program Files\Google\chrome \Applicatpa……
遇到上面的问题是因为,谷歌浏览器设立了自动更新,然而,我们的chromedriver版本与浏览器的版本不适应,无法启动……
遇到谷歌浏览器更新后,selenium的执行出现问题怎么办?
下载历史浏览器和驱动器
我的解决方法是保留了原来的谷歌浏览器,以及相对应的chromedriver版本,并且固定使用原来的谷歌浏览器就可以了,这样就不用担心浏览器自动更新的问题了。
如果没有保存原来的谷歌浏览器的版本的话,可以在这个网址这里下载历史浏览器版本:网址
找到这个,下载下来:
然后在chromedriver 的网站下载对应的版本,网址
(找到跟谷歌浏览器同一版本的驱动器)
(驱动器很长一段时间都维持在114的版本就不再更新了,嘤嘤嘤~)
如果无法下载的话,可以在我上传的资源地方,下载我常用的【历史谷歌浏览器】和chromedriver ~
详细链接:历史谷歌浏览器和对应的chromedriver文件,防谷歌浏览器自动更新影响selenium运行
不过这样一来,也会有新的问题:新的版本的谷歌浏览器和旧版本的谷歌浏览器会有使用冲突,一般程序会自动调用原来的浏览器(也就是会自动更新的那个)
所以就要加上指定使用哪个路径下的chrome浏览器了,代码:options.binary_location=
+chrome的路径
全部代码:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Optionsoptions = Options()
options.add_argument('--verbose')#指定调用哪个路径下的谷歌浏览器
options.binary_location=r'C:\Program Files (x86)\Google\chrome.exe'chromedriver_path = r"D://anaconda//chromedriver.exe"
service = Service(executable_path=chromedriver_path)
#service.log_path = '/path/to/chromedriver.log'driver = webdriver.Chrome(service=service, options=options)
driver.get('http://www.baidu.com')
于是就执行完成啦!
自动下载当前浏览器对应驱动
或者使用ChromeDriverManager()
的方法,自动下载当前浏览器对应驱动的方法,实测好用!
(缺点是运行起来的时候会受网络影响,网页打开得比较慢)
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
service = ChromeService(ChromeDriverManager().install()) # 自动下载当前浏览器对应驱动
driver = webdriver.Chrome(service=service)