SessionNotCreatedException:消息:未创建会话:此版本的ChromeDriver仅支持Chrome版本81

时间:2020-02-19 09:24:42

标签: selenium google-chrome selenium-webdriver selenium-chromedriver robotframework

我目前是机器人框架的新手。我当前使用的是chrome和chromedriver的最新窗口版本,当前版本为80,但是当我尝试运行测试时,它显示消息“ SessionNotCreatedException:消息:未创建会话:此版本的ChromeDriver pycharm仅支持Chrome版本81“,但目前仅提供beta版本的81。我尝试卸载所有内容并再次重新安装,但是任何人都无法解决这个问题。谢谢!

以下屏幕截图: 1

2

32 个答案:

答案 0 :(得分:111)

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

您可以使用webdrive-manager自动使用正确的chromedriver。 安装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

答案 1 :(得分:18)

执行以下步骤:

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

  2. https://sites.google.com/a/chromium.org/chromedriver/下载相同版本的chromedriver

  3. 在pycharm中提供正确的路径并运行代码。

答案 2 :(得分:16)

我在MacOS上收到了相同的消息:

“ selenium.common.exceptions.SessionNotCreatedException:消息: 会话未创建:此版本的ChromeDriver仅支持Chrome 版本81”

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

brew cask upgrade chromedriver

答案 3 :(得分:7)

此错误消息...

require '../wp-content/plugins/woocommerce/vendor/autoload.php';

use Automattic\WooCommerce\Client;

...表示 ChromeDriver v81 无法启动/产生新的浏览上下文,即 Chrome浏览器,其中版本是其他然后是81.0。


您的主要问题是所使用的二进制版本之间的不兼容性,如下所示:

  • 您提到了使用 chromedriver = 80 chrome = 80 的方法,但是以某种方式在使用程序执行ChromeDriver v 81.0时使用。
  • 因此,很明显,您的系统中存在 chromedriver = 81.0 ,并且在您运行时被调用的系统$woocommerce = new Client( 'https://inativas.fernandoaureliano.com/casagemeos', 'ck_0fb0ee16b7645e5bcbce6857bd8ba2c631b2db78', 'cs_7b4845a85103f8bafbf73a205c0521d7e8c58c0b', [ 'wp_api' => true, 'wp_json' => true, 'version' => 'wc/v3', 'verify_ssl' => false, 'query_string_auth' => true 'timeout' => 120, ] ); 变量中也存在:

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

解决方案

有两种解决方案:

  • chrome 升级到 Chrome版本81.0 级别。 (根据ChromeDriver v81.0 release notes
  • 或者您可以使用 chromedriver v80.0 二进制位置覆盖默认的 chromedriver v81.0 二进制位置,如下所示:

    PATH

参考

您可以在以下位置找到一些相关的讨论

答案 4 :(得分:6)

这对我有用

brew cask upgrade chromedriver

答案 5 :(得分:5)

Chrome版本每天都会更新,因此您需要根据chrome版本使用确切的chromedriver版本 https://chromedriver.chromium.org/downloads在此网站上,您可以下载chromedrivers

答案 6 :(得分:5)

  1. 首先检查最新的Chrome版本(这是您的浏览器Chrome版本)link

  2. 从此link

    下载相同版本的Chrome Web 驱动程序

如果最新的Chrome Web 驱动程序与您的Chrome Browser 版本不匹配,请不要下载。

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

答案 7 :(得分:4)

转到您的Chrome浏览器设置->关于Chorme->检查版本 并根据您的Chrome版本从下方下载chromedriver https://chromedriver.chromium.org/downloads

答案 8 :(得分:3)

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

  1. Download最新的chromedriver文件。
  2. 解压缩下载的文件。
  3. 在计算机上搜索旧chromedriver文件的位置,然后将其替换为新的chromedriver文件。
  4. 右键单击chromedriver文件,然后单击“打开”。不要双击,因为Mac无法正确打开它。
  5. 该文件首次运行后,您可以将其关闭,并且更新将会进行。

答案 9 :(得分:1)

我也有类似的问题。我有一个解决方案..下载匹配的chromedriver,并将chromedriver放在 / usr / local / bin 路径下。可以。

答案 10 :(得分:1)

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

如果你使用 npm

npm install -g webdriver-manager

webdriver-manager 更新

答案 11 :(得分:1)

我已经在要运行会话的端口上运行本地服务器,这导致了错误。关闭该本地服务器可以为我解决此问题。

答案 12 :(得分:1)

解决此问题的方法非常简单,我检查了chrome版本,并在PATH变量中安装了较旧的chromedriver,因此我下载了与我的浏览器匹配的chromedriver版本,并替换了PATH中的旧版本。 webdriver模块在我的PATH中查找了chromedriver,它将找到匹配的版本

答案 13 :(得分:1)

Chrome处于更新中间的情况也会导致此异常。就我而言,chromedriver已经更新,而chrome本身是v81而不是v83。

答案 14 :(得分:1)

如果您在自动集群上运行东西时遇到此错误,并且每次都下载稳定版本的google 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**

在databricks环境上运行预定作业时,我可以使用上述方法获得chrome浏览器和chrome驱动程序的兼容版本,并且它像没有任何问题的魅力一样工作。

希望它可以以一种或其他方式帮助他人。

答案 15 :(得分:1)

答案 16 :(得分:0)

我在最近的 chrome 升级后遇到了这个错误,而且我最近将我的 Mac 更新到了 Big Sur。好像 cask 不是 brew 命令的一部分,需要单独使用。

brew install --cask chromedriver

答案 17 :(得分:0)

请参阅@dylanvanw的答案。您可能仍然不走运。我发现您安装Python的路径可能有所不同。就我而言,我必须将Chromedriver.exe从缓存路径(C:\ Users \ Poom.wdm \ drivers \ chromedriver \ win32 \ 84.0.4147.30)移至C:\ Python38,然后才能正常工作!

答案 18 :(得分:0)

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

rsDriver(browser = "firefox")

答案 19 :(得分:0)

如果您在 Visual Studio 2019 中遇到此错误并使用 jsakamoto 的 Selenium.WebDriver.ChromeDriver,请检查您在 packages.config 文件中引用的版本。

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

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

答案 20 :(得分:0)

有特定于驱动程序的 NuGet 包,可将驱动程序二进制文件复制到您的 bin 文件夹。例如,在我的 .NET Core 项目中,我使用 https://www.nuget.org/packages/Selenium.WebDriver.ChromeDriver/ 中最新的稳定 NuGet。
基本上 NuGet 包含 chromedriver.exe 并每次将其复制到您的程序集文件夹(在我的情况下为 \bin\Debug\netcoreapp3.1)。这是我的项目中的一行:

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

您可以使用:

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

当我第一次添加此引用时,我看到了针对此特定包的警告,但在我关闭并重新打开 Visual Studio 2019 后它消失了。
星号表示将使用最新(数量最多)的稳定包,如here 所述。
当然,您可以手动安装最新版本(不使用通配符,而是选择特定版本),然后在每个 2 个主要 Chrome 版本上更新 NuGet 包参考,以便与您的 Chrome 版本匹配。 (87 chromedriver 适用于 87 和 88 Chrome,但不适用于 89)。 然后使用以下行实例化驱动程序:

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

这种方法不需要指定必须更新的 chromedriver.exe 的具体路径。

参考:
https://www.automatetheplanet.com/webdriver-net50/

答案 21 :(得分:0)

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

答案 22 :(得分:0)

对于mac用户,这是最好的解决方法, 下载 chromedriver 然后将该 chromedriver 粘贴到此目录中

/usr/local/bin

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

答案 23 :(得分:0)

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

来检查版本

chrome://settings/help

被告知它也会影响管道代理和其他开发者计算机上的 Chrome 版本。

答案 24 :(得分:0)

当 chrome 驱动程序没有正确关闭时,我收到了这个错误。例如,如果我尝试查找某些内容并单击它但它不存在,则驱动程序会抛出异常并且线程在那里结束(我没有关闭驱动程序)。

所以,当我稍后再次运行相同的方法时,我不得不重新初始化驱动程序,驱动程序没有初始化并抛出异常。

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

答案 25 :(得分:0)

我找到了通过 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") ;

答案 26 :(得分:0)

我采取了一些措施使它生效

  1. 检查您当前的Chrome版本,例如81
  2. 转到工具/ nuget程序包管理器
  3. 选择硒铬驱动器
  4. 升级/降级到您拥有的相同Chrome版本。

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

答案 27 :(得分:0)

将google chrome更新到版本81。

答案 28 :(得分:0)

人们似乎没有在这里回答以下问题:正在使用最新版本的Beta Chrome / Chromium,而没有看到匹配的chromedriver版本

例如,目前,Chromium for Mac的版本为86.0.4190.0(开发人员内部版本)(64位),而latest chromedriver versions listed

当前稳定版本:ChromeDriver 83.0.4103.39

当前Beta版:ChromeDriver 84.0.4147.30

如果您转到https://chromedriver.chromium.org/downloads/version-selection,它们会提供一些有关获得兼容版本的指示。末尾的最后一行提到了尝试 ChromeDriver Canary build ,这导致了如何从Chromium browser snapshots获取它。

当然,这不言而喻,使用最新的实验版本可能会出现错误

答案 29 :(得分:0)

即使使用了webdriver manager,我也遇到了这个问题。在webddriver管理器中指定所需的chromedriver确切版本后,我能够解决此问题。

我使用的是chrome版本84,而webdriver管理器正在安装chromedriver的最新版本,即85.0.4183.38。

我通过编写以下命令使Webdriver Manager可以打开chromedriver版本84.0.4147.30。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

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

答案 30 :(得分:-1)

解决方案是:-

  • 从chrome:// settings / help
  • 中检出chrome的chrome版本。
  • 查看哪个版本的ChromeDriver与您当前的版本兼容 here的chrome版本
  • 下载兼容的Chrome并替换为现有的ChromeDriver 一个新的ChromeDriver。
  • 现在运行代码

答案 31 :(得分:-2)

只需将Chrome浏览器更新到可用的最新版本。