我正试图启动一个selenium webdriver实例,但我收到了以下错误:
SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 97 Current browser version is 100.0.4896.75 with binary path *path here*
我已经尝试过使用chromium 98,它有效,但在版本100中发现了一个新的漏洞,我想更新
在mac M1上,我收到以下错误:
Selenium::WebDriver::Error::SessionNotCreatedError:
session not created: This version of ChromeDriver only supports Chrome version 103
Current browser version is 105.0.5195.125 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
(Driver info: chromedriver=103.0.5060.134 (8ec6fce403b3feb0869b0732eda8bd95011d333c-refs/branch-heads/5060@{#1262}),platform=Mac OS X 12.5.1 arm64)
我只是简单地使用brew
升级了chromedriver,它为我解决了这个问题。
brew upgrade chromeDriver
此错误消息。。。
SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 97 Current browser version is 100.0.4896.75 with binary path...
意味着ChromeDriver无法启动/生成新的浏览上下文,即谷歌chrome会话。
您的主要问题是您使用的二进制文件版本之间存在不兼容性,如下所示:
- 您正在使用铬=100.0.4896.75
- 您正在使用chromedriver=97.0
- chromedriver=97.0的发行说明明确提到以下内容:
支持Chrome 97版
因此chromedriver=97.0和chrome=100.4896.75之间存在明显的不匹配
解决方案
确保:
- ChromeDriver更新为ChromeDriverv100.0.4896.60级别,与chrome=100.4896.75匹配
如果这对其他人有帮助,yum-install chromium安装了chromium版本102,而npm install-g chromedriver则安装了版本103,该版本需要chromium版本103。
我确信回滚到旧版本并不是最好的解决方案,但对我来说,安装chromedriver的补充版本可以在我的系统上运行。要安装chromedriver的旧版本,该版本将与通过百胜安装的chrome版本保持一致,我首先来到这里https://chromedriver.chromium.org/downloads并复制了102的版本号(在本例中为102.0505.61)
然后,安装">correct";chromedriver版本是通过运行CHROMEDRIVER_VERSION=102.0.5005.61 npm install -g chromedriver
如果Chrome浏览器版本和ChromeDriver版本都同步,那么也许你应该从你的项目调用它的目录中寻找,这意味着可能有其他目录正在执行ChromeDrive,并且其版本与浏览器不兼容。
在我的案例中,我的VS代码是从项目的node_modules/.bin/ChromeDriver目录中获取ChromeDrive的,所以我用最新的替换了它,它起了作用。
对我来说,问题是我通过将chromedriver更新到了最新的chrome版本
执行webdriver-manager update --gecko false
的npm run e2e:update-webdriver
因此,chromedriver版本比chrome浏览器版本更高。为了解决这个差异,我不得不运行:
sudo apt-get update
然后sudo apt-get --only-upgrade install google-chrome-stable
希望这能帮助到别人!
遇到了类似的问题。通常,我会通过更改package.json
文件中的版本号来解决这个问题,以匹配我的chrome浏览器版本。这一直有效,直到chromedriver v115问世。对于chromedriver v115,即使浏览器版本不匹配,它仍然可以工作。这就是我可以放入我的package.json
:
"webdriver:update": "webdriver-manager update --versions.chrome=114.0.5735.248",
而我的浏览器是115.0.5790.170。端到端测试仍然有效。
现在chromedriver v116发布了,我的浏览器更新到了v116.0.5845.96,上面的内容已经不起作用了。我的解决方法是下载chromedive-win64.zip,并将其放入C:\yourproject\node_modules\webdriver-manager\selenium并提取。然后,您将拥有一个Chromedive-win 64文件夹,其中包含chromedrive.exe文件。接下来是更新update-config.json
文件,使其指向最新的chromedriver。更新最后这样:
{
"gecko": {
...
},
"chrome": {
"last": "C:\your project\node_modules\webdriver-manager\selenium\chromedriver-win64\chromedriver.exe",
"all": [
"C:\your project\node_modules\webdriver-manager\selenium\chromedriver_83.0.4103.39.exe",
"C:\your project\node_modules\webdriver-manager\selenium\chromedriver_114.0.5735.248.exe",
"C:\your project\node_modules\webdriver-manager\selenium\chromedriver_114.0.5735.16.exe"
]
},
"standalone": {
'''
}
}
在此之后,端到端测试再次发挥作用。
您可以使用version\umain参数,如下所示:
import undetected_chromedriver as uc
driver = uc.Chrome(version_main=116)
(116是我目前安装的chrome主版本)
参见https://github.com/ultrafunkamsterdam/undetected-chromedriver/issues/572
但如果你的浏览器更新了,你应该更改version\umain到新的chrome版本所以我使用这个方法来获得当前的chrome版本,并将其作为version\umain值传递:
安装Python的Webdriver Manager:pip安装Webdriver Manager
使用此代码:
将未检测到的chromedriver导入为uc
从webdriver_manager.core.os_manager导入OperationSystemManager,ChromeType
br_ver=OperationSystemManager().get_browser_version_from_os(ChromeType.GOOGLE)
version_in=int(br_ver.split('.')[0])options=uc。ChromeOptions()
driver=uc。Chrome(版本主=版本主)