我目前是机器人框架的新手。我当前使用的是chrome和chromedriver的最新窗口版本,当前版本为80,但是当我尝试运行测试时,它显示消息“ SessionNotCreatedException:消息:未创建会话:此版本的ChromeDriver pycharm仅支持Chrome版本81“,但目前仅提供beta版本的81。我尝试卸载所有内容并再次重新安装,但是任何人都无法解决这个问题。谢谢!
答案 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())
答案 1 :(得分:18)
执行以下步骤:
检查chrome浏览器的版本。
从https://sites.google.com/a/chromium.org/chromedriver/下载相同版本的chromedriver
在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 = 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
有两种解决方案:
或者您可以使用 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)
如果最新的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上是)
答案 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)
您还可以从以下位置下载正确的chromedriver版本:
https://chromedriver.chromium.org/downloads https://chromedriver.storage.googleapis.com/index.html?path=81.0.4044.138/
答案 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 的具体路径。
答案 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)
我采取了一些措施使它生效
重新启动应用程序应该可以。
答案 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)
解决方案是:-
答案 31 :(得分:-2)
只需将Chrome浏览器更新到可用的最新版本。