SessionNotCreatedException: Message: session not create: 此版本的 ChromeDriver 只支持 Chrome 81版本

我现在是机器人框架的新手。我现在使用的是最新的 Chrome 和 chromeDriver 窗口版本,是80,但是当我尝试运行测试时,它会显示一条消息“ SessionNotCreatedException: Message: session not create: This version of ChromeDriver only support Chrome version 81”,但是目前 beta 版本的81只能使用 pycharm。我已经尝试卸载一切和重新安装它,但没有任何工作可以帮助我这一点。谢谢!

截图如下: 1

2

368569 次浏览

此错误消息..。

SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 81

... 意味着 ChromeDriver v81无法启动/产生一个新的 浏览上下文,即 Chrome 浏览器,其版本不是81.0。


你的主要问题是你使用的二进制文件版本之间的 不相容如下:

  • 您提到过使用 色差驱动器 = 80铬 = 80,但是在程序执行时使用了 ChromeDriver v81.0
  • 因此,很明显,您的 铬驱动器 = 81.0存在于系统中,并且存在于系统 PATH变量中,这个变量在您:

    driver = webdriver.Chrome()
    

Solution

There are two solutions:

  • Either you upgrade chrome to Chrome Version 81.0 level. (as per ChromeDriver v81.0 release notes)
  • Or you can override the default chromedriver v81.0 binary location with chromedriver v80.0 binary location as follows:

    from selenium import webdriver
    
    
    driver = webdriver.Chrome(executable_path=r'C:\path\to\chromedriver.exe')
    driver.get('http://google.com/')
    

Reference

You can find a couple of relevant discussions in:

我用 webdrive 管理器解决了这类问题。

您可以自动使用正确的铬驱动器使用网络驱动器管理器。 安装 webdrive-manager:

pip install webdriver-manager

然后在 python 中使用驱动程序,如下所示

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager


driver = webdriver.Chrome(ChromeDriverManager().install())

这个答案摘自 https://stackoverflow.com/a/52878725/10741023

您的 Chrome Driver版本需要匹配您的 Chrome Browser版本

  1. 通过输入 chrome://version获得 Chrome 浏览器版本

在此输入图像描述

  1. 下载与你的 Chrome 浏览器版本相匹配的 Chrome 驱动程序版本,从本网站 Https://chromedriver.chromium.org/downloads

当你的 Chrome 浏览器正在升级的时候也会出现这种情况。在我的案例中,chrome 驱动程序已经更新了,而 chrome 本身是 v81而不是 v83。

如果你在自动集群上运行时遇到这个错误,并且每次都下载稳定版本的谷歌 chrome,那么你可以使用下面的 shell 脚本动态下载兼容版本的 chrome 驱动程序,即使稳定版本的 chrome 得到了更新。

%sh
#downloading compatible chrome driver version
#getting the current chrome browser version
**chromeVersion=$(google-chrome --product-version)**
#getting the major version value from the full version
**chromeMajorVersion=${chromeVersion%%.*}**
# setting the base url for getting the release url for the chrome driver
**baseDriverLatestReleaseURL=https://chromedriver.storage.googleapis.com/LATEST_RELEASE_**
#creating the latest release driver url based on the major version of the chrome
**latestDriverReleaseURL=$baseDriverLatestReleaseURL$chromeMajorVersion**
**echo $latestDriverReleaseURL**
#file name of the file that gets downloaded which would contain the full version of the chrome driver to download
**latestDriverVersionFileName="LATEST_RELEASE_"$chromeMajorVersion**
#downloading the file that would contain the full release version compatible with the major release of the chrome browser version
**wget $latestDriverReleaseURL**
#reading the file to get the version of the chrome driver that we should download
**latestFullDriverVersion=$(cat $latestDriverVersionFileName)**
**echo $latestFullDriverVersion**
#creating the final URL by passing the compatible version of the chrome driver that we should download
**finalURL="https://chromedriver.storage.googleapis.com/"$latestFullDriverVersion"/chromedriver_linux64.zip"**
**echo $finalURL**
**wget $finalURL**

我能够得到兼容版本的铬浏览器和铬驱动程序使用上述方法时,运行计划的工作在数据砖环境,它像一个魅力没有任何问题。

希望它能以这样或那样的方式帮助别人。

我在 MacOS 上得到了同样的信息:

”selenium.common 异常. SessionNotCreatedException: 消息: 没有创建 session: 这个版本的 ChromeDriver 只支持 Chrome 版本81”

然后我运行这个命令,它消失了:

# Homebrew 3
brew upgrade chromedriver


# Homebrew < 3
brew cask upgrade chromedriver

我也有过类似的问题。我有个办法。.下载匹配的铬驱动程序,并将铬驱动程序置于 /usr/local/bin路径下。有用。

进入你的 Chrome 设置-> 关于 Chrome-> 检查版本 并根据你的 Chrome 版本从下面下载 ChromeDriver Https://chromedriver.chromium.org/downloads

解决办法是:-

  • 查看您的 chrome 的 chrome 版本
  • 检查一下 ChromeDriver 的哪个版本与你的当前版本兼容 Chrome 版本: http://chromedriver.chromium.org/downloads
  • 下载兼容的版本,并将现有的 ChromeDriver 替换为 一个新的 ChromeDriver。
  • 现在运行代码

采取以下步骤:

  1. 检查 Chrome 浏览器的版本。

  2. 下载相同版本的 chrome 驱动程序,地址: http://sites.google.com/chromium.org/Driver/home”rel = “ norefrer”> https://sites.google.com/chromium.org/driver/home

  3. 在 Pycharm 中指定正确的路径并运行代码。

铬版本是每天更新,所以你需要使用精确的铬驱动器版本根据铬版本 Https://chromedriver.chromium.org/downloads 在本网站,你可以下载色度驱动程序

感觉人们并没有回答这个问题,那就是: 正在使用最新版本的 beta Chrome/Chromium,但没有看到与之匹配的 Chrome 驱动程序版本

例如,当前编写本文时,Mac 的 Chromium 版本是86.0.4190.0(Developer Build)(64位) ,而 列出了最新的铬合金驱动器版本

当前稳定版本: ChromeDriver 83.0.4103.39

当前测试版本: ChromeDriver 84.0.4147.30

如果你去 https://chromedriver.chromium.org/downloads/version-selection,他们提供了一些关于获得兼容版本的指南。接近结尾的最后一行提到了尝试 ChromeDriver 金丝雀版本,这导致了如何从 Chromium 浏览器快照获得它。

当然,不用说,使用最新的实验版本可能会有 bug

只需更新 Chrome 浏览器到最新版本即可。

我面对这个问题,即使使用网络驱动程序管理器。我能够解决这个问题后,指定的确切版本的铬驱动程序,我需要在网络驱动程序管理器。

我使用的是 chrome 版本84,网络驱动程序经理正在安装最新版本的 chrome 驱动程序,它是85.0.4183.38。

我通过写下面的命令,使网络驱动程序经理打开了 ChromeDriver 版本84.0.4147.30。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager


driver = webdriver.Chrome(ChromeDriverManager(84.0.4147.30).install())

参考@dylanvanw 的回答。你可能还是不走运。我发现您可能有一个不同的安装 Python 的路径。在我的例子中,我必须将 Chromedriver.exe 从缓存路径(C: 用户 Poom.wdm 驱动器 chromeDriver win3284.0.4147.30)移动到 C: Python 38,然后它就可以工作了!

  1. 首先检查最新的 Chrome 版本(这是你的浏览器版本) < a href = “ https://www.whatismyBrowser.com/guide/the-best-version/Chrome”rel = “ noReferrer”> 链接

  2. 从这个 < a href = “ https://chromedriver.storage.googleapis.com/index.html”rel = “ norefrer”> 链接下载相同版本的 Chrome 韦伯驱动程序

不要下载最新的 Chrome韦伯驱动程序,如果它不匹配你的 Chrome浏览器版本。

注意: 当我写这个消息的时候,最新的 Chrome 浏览器版本是84,但是最新的 Chrome 驱动版本是85。我使用的 Chrome 驱动程序版本84,所以 Chrome 驱动程序和 Chrome 浏览器版本是相同的。

这对我有用

brew cask upgrade chromedriver

以上内容不适用于 MacO,请使用: 酿造安装铬驱动程序(如果还没有安装) 酿造升级的铬合金驱动器

解决方案(至少在 OSX 上)是:

  1. 下载 最新的 ChromeDriver 文件。
  2. 解压下载的文件。
  3. 在你的计算机上搜索旧的铬合金驱动器文件的位置,并将其替换为新的铬合金驱动器文件。
  4. 右键单击铬驱动程序文件并单击打开。不要双击,因为 Mac 不会以正确的方式打开它。
  5. 一旦文件第一次运行,您可以关闭它,更新就会发生。

我解决这个问题的方法很简单,我检查了我的 chrome 版本,在 PATH 变量中有一个旧的 chromeDriver,所以我下载了与我的浏览器相匹配的 chromeDriver 版本,并在 PATH 中替换了旧的,所以当 webDriver 模块在我的 PATH 中寻找一个 chromeDriver 时,它会找到匹配的版本

我已经在会话想要运行的同一端口上运行了本地服务器,这导致了错误。关闭本地服务器帮我解决了这个问题。

我所采取的步骤

  1. 检查你当前的 Chrome 版本,例如81
  2. Goto tools/nuget 软件包管理器
  3. 选择硒铬驱动程序
  4. 升级/降级到你所使用的 Chrome 版本。

重新启动应用程序应该可以工作。

我找到了一个解决方案,可以通过 WebDriverManager 下载 ChromeDriver 的最新版本 你可以试试,

WebDriver driver = null ;
boolean oldVersion = true;
String chromeVersion = "";
try {
try{
FileReader reader = new FileReader("chromeVersion.txt") ;
BufferedReader br = new BufferedReader(reader) ;
        

String line;
        

while ((line = br.readLine()) != null){
chromeVersion = line.trim();
}
reader.close();
} catch (IOException e ) {}
    

WebDriverManager.chromedriver().version(chromeVersion).setup();
driver = new ChromeDriver() ;
} catch (Exception e) {
oldVersion = false;
String err = e.getMessage() ;
chromeVersion = err.split("version is")[1].split("with binary path")[0].trim();
try{
FileWriter writer = new FileWriter("chromeVersion.txt", true) ;
writer.write(chromeVersion) ;
writer.close();
} catch (IOException er ) {}
}


if (!oldVersion){
WebDriverManager.chromedriver().version(chromeVersion).setup();
driver = new ChromeDriver() ;
}


driver.get("https://www.google.com") ;

您需要安装网络驱动程序管理器。请确保网络驱动程序管理器它也更新。

如果使用 npm :

安装-g 网络驱动程序-管理器

网络驱动程序-管理程序更新

我得到这个错误时,铬驱动程序没有正确关闭。例如,如果我试图找到某个东西并单击它,但它并不存在,驱动程序将抛出一个异常,线程将在那里结束(我没有关闭驱动程序)。

因此,当我稍后再次运行相同的方法,必须重新初始化驱动程序时,驱动程序没有初始化,而是抛出了异常。

我的解决方案只是将硒任务包装在 try catch 中并正确关闭驱动程序

它与 python 无关,但是对于 C # 或者 dotnet用户,您可以在 nuget 包中指定驱动程序版本。例如,Selenium.WebDriver.ChromeDriver是一个很好的起点。应该和浏览器版本匹配。在 chrome 中,你可以通过访问来检查版本

chrome://settings/help

请注意,它还将影响管道代理和其他开发人员的计算机上的铬版本。

对于 Mac 用户来说,这是解决, 下载铬合金驱动器 然后粘贴到这个目录中的铬驱动程序

/usr/local/bin

如果您没有找到这个目录,那么从查找器 点击开始 然后选择电脑 然后按 command + shift + 。(这显示了 mac 中的隐藏文件) 那么你肯定会很容易看到这些目录

找出你当前的 Chrome 版本进入设置-> 关于 chrome 转到 URL https://chromedriver.chromium.org/downloads 下载并使用兼容版本。

有一些特定于驱动程序的 NuGet 包,可以将驱动程序二进制文件复制到 bin 文件夹中。例如,在我的。NET 核心项目我使用最新的稳定 NuGet 从这里 https://www.nuget.org/packages/Selenium.WebDriver.ChromeDriver/
基本上 NuGet 包含 chromedriver.exe,并且每次都将其复制到汇编文件夹(在我的例子中是 bin Debug netcoreapp3.1)。这是我在我的项目中的路线:

"<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="*" />"

你可以使用:

dotnet add package Selenium.WebDriver.ChromeDriver --version *

当我第一次添加这个引用时,我看到一个针对这个特定包的警告,但是在我关闭并重新打开 VisualStudio2019之后它就消失了。
星号意味着最新(最高数量)的稳定包将被使用作为解释 给你
当然,你可以手动安装最新版本(没有通配符,但是选择一个特定的版本) ,然后在每两个主要的 Chrome 版本上更新 NuGet 包引用,以便与你的 Chrome 版本匹配。(87铬合金驱动器可以与87和88铬合金驱动器一起工作,但不能与89铬合金驱动器一起工作)。 然后驱动程序用下面的代码行实例化:

var driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

这种方法消除了为 chromedriver.exe 指定具体路径的需要,这些路径必须进行更新。

参考文献:
Https://www.automatetheplanet.com/webdriver-net50/

如果您在 VisualStudio2019中得到此错误并使用 Selenium。WebDriver.Jsakamoto 的 ChromeDriver,检查 packages.config 文件中引用的版本。

  <package id="Selenium.WebDriver.ChromeDriver" version="89.0.4389.2300" targetFramework="net45" />

将 NuGet 包更新到适当的版本并解决问题。

我通过简单地运行 Firefox (geckoDriver)而不是 Chrome 来解决这个问题:

rsDriver(browser = "firefox")

我得到了这个错误后,最近的铬升级,而且我最近更新了我的 Mac 到大苏尔。看来木桶不是酿造命令的一部分,需要单独使用它。

brew install --cask chromedriver

您只需要从 node _ module 卸载或删除量角器并重新安装它。

npm uninstall protractor
npm install protractor

您可以处理这个异常

from selenium.common.exceptions import SessionNotCreatedException

添加这个函数

def update_chrome():
try:
print("Updating chrome driver")
download_chrome = "wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb"
unpack_chrome = "sudo dpkg -i google-chrome-stable_current_amd64.deb"
install_chrome = "sudo apt-get -f install"
    

file_path = os.path.join(os.environ['HOME'], "google-chrome-stable_current_amd64.deb")
if os.path.isfile(file_path):
print("{} found\nremoving {}".format(file_path, file_path))
os.remove(file_path)
else:
print("File does not exist {}".format(file_path))
    

old_chrome_ver = os.popen("/usr/bin/google-chrome --version").read().strip('Google Chrome ').strip().split(".")[0]
print("Current Chrome version: {}".format(old_chrome_ver))
    

os.system(command=download_chrome)
sleep(2)
os.system(command=unpack_chrome)
sleep(5)
os.system(command=install_chrome)
    

crnt_chrome_ver = os.popen("/usr/bin/google-chrome --version").read().strip('Google Chrome ').strip().split(".")[0]
print("Current Chrome version: {}".format(crnt_chrome_ver))
    

if crnt_chrome_ver == old_chrome_ver:
print("Chrome version is same as before")
elif crnt_chrome_ver > old_chrome_ver:
print("Chrome version is updated from {} to {}".format(old_chrome_ver, crnt_chrome_ver))
return True


except Exception as e:
print("Error while updating chrome: {}".format(e))
return False

然后调用这个函数

try:
# Your code here
except SessionNotCreatedException as snce:
print("Session not created: {}".format(snce))
chrome_update_result = False
if recurrences == 0:
chrome_update_result = update_chrome()
if chrome_update_result:
recurrences += 1
print("Chrome updated successfully")
erisapedia_bot(state, download_dir)
return True
else:
print("Chrome update failed")
return False

对我起作用的是这个命令:

pip install chromedriver-binary==your_chrome_version

这将卸载当前的铬驱动程序,你已经安装,并将安装一个铬驱动程序匹配您的铬版本。

使用 Laravel (PHP) ,您可以通过以下方式解决这个问题:

php artisan dusk:install

它将下载并安装新的驱动程序。

文件: https://laravel.com/docs/9.x/dusk#installation