I am currently new to robot framework.I am currently using latest window version of chrome and chromedriver which is 80 but when i try to run the test it gives the message "SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 81" in pycharm but currently beta version of 81 is only available. I have tried uninstalling everthing and reinstalling it again but nothing works can anyone help me with this.Thank you!
I solved these kinds of problems using the webdrive manager.
You can automatically use the correct chromedriver by using the webdrive-manager. Install the webdrive-manager:
pip install webdriver-manager
Then use the driver in python as follows
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
This answer is taken from https://stackoverflow.com/a/52878725
ValueError: There is no such driver by url https://chromedriver.storage.googleapis.com/LATEST_RELEASE_117.0.5938
. This solved the problem for me: https://mcmap.net/q/67234/-valueerror-there-is-no-such-driver-by-url –
Cantle I got the same message on MacOS:
"selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 81"
Then I run this command, it's gone:
# Homebrew 3
brew upgrade chromedriver
# Homebrew < 3
brew cask upgrade chromedriver
brew upgrade chromedriver
. –
Heptamerous Do below steps :
Check the version of chrome browser.
download chromedriver of same version from https://sites.google.com/chromium.org/driver/home
Give correct path in the pycharm and run the code.
This error message...
SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 81
...implies that the ChromeDriver v81 was unable to initiate/spawn a new Browsing Context i.e. Chrome Browser where is version is other then 81.0.
Your main issue is the incompatibility between the version of the binaries you are using as follows:
- You mentioned about using chromedriver=80 and chrome=80 but somehow while your program execution ChromeDriver v 81.0 is used.
So, it's quite evident your have chromedriver=81.0 present within your system and is present within the system
PATH
variable which gets invoked while you: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:
- How to work with a specific version of ChromeDriver while Chrome Browser gets updated automatically through Python selenium
- selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 80
- Ubuntu: selenium.common.exceptions: session not created: This version of ChromeDriver only supports Chrome version 79
executable_path
seems to do nothing. My /usr/local/bin/chromedriver --version
matches the exact version it's looking for and it still complains that the version doesn't match. –
Jefferey this works for me
brew cask upgrade chromedriver
Above is deprecated on MacOs, use: brew install chromedriver (if not already installed) brew upgrade chromedriver
Go to your Chrome settings -> About Chrome -> Check version and download chromedriver from Below according to your Chrome version https://chromedriver.chromium.org/downloads
First of all check latest Chrome version (This is your browser Chrome version) link
Download same version of Chrome Web Driver from this link
Do not download latest Chrome Web Driver if it does not match your Chrome Browser version.
Note: When I write this message, latest Chrome Browser version is 84 but latest Chrome Driver version is 85. I am using Chrome Driver version 84 so that Chrome Driver and Chrome Browser versions are the same.
The solution (at least on OSX) is:
- Download the latest chromedriver file.
- Unzip the downloaded file.
- Search the location of the old chromedriver file on your computer and replace it with the new chromedriver file.
- Right-click the chromedriver file and click open. Do not double click as Mac will not open it the proper way.
- Once the file runs for the first time, you can close it and the update will have taken place.
which chromedriver
–
Hassan Chrome version is updating everyday so you need use exact chromedriver version according chrome version https://chromedriver.chromium.org/downloads in this website you can download chromedrivers
Your Chrome Driver
version needs to match your Chrome Browser
version
- Get you Chrome Browser version, by typing
chrome://version
- Download Chrome Driver version that matches you Chrome Browser version, form this website https://chromedriver.chromium.org/downloads
With Laravel (PHP) you can fix this with:
php artisan dusk:install
It will download and install the new driver.
Documentation: https://laravel.com/docs/9.x/dusk#installation
If you are getting this error when you run stuffs on automated cluster and you are downloading the stable version of the google chrome every time then you can use the below shell script to download the compatible version of the chrome driver dynamically every time even if the stable version of the chrome gets updated.
%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**
I was able to get the compatible version of chrome browser and chrome driver using the above approach when running scheduled job on the databricks environment and it worked like a charm without any issues.
Hope it helps others in one way or other.
You need to install webdriver manager. Make sure webdriver manager it is also updated.
If you use npm:
npm install -g webdriver-manager
webdriver-manager update
What worked for me is this command:
pip install chromedriver-binary==your_chrome_version
This will uninstall the current chrome-driver that you have installed and will install a chrome-driver that matches your chrome version.
The case when your Chrome is in the middle of its update also causes this exception. In my case chromedriver was already updated, while the chrome itself was v81 instead of v83.
You can also download the correct chromedriver version from:
https://chromedriver.chromium.org/downloads https://chromedriver.storage.googleapis.com/index.html?path=81.0.4044.138/
I too had a similar problem. And I've got a solution .. Download the matching chromedriver, and place the chromedriver under the /usr/local/bin path. It works.
The way I solved this issue was quite simple, I checked my chrome version and I had an older chromedriver in my PATH variable, so I downloaded the chromedriver version that matched my browser and replaced the old one in the PATH, so when the webdriver module looked for a chromedriver in my PATH, it would find the matching version
I had already been running a local server at the same port the session wanted to run on, and this caused the error. Shutting down that local server fixed this for me.
There are driver-specific NuGet packages, that copy the driver binaries to your bin folder. For example in my .NET Core project I use the latest stable NuGet from here https://www.nuget.org/packages/Selenium.WebDriver.ChromeDriver/.
Basically the NuGet contains the chromedriver.exe and copies it every time to your assembly folder (\bin\Debug\netcoreapp3.1 in my case). This is the line I have in my project:
"<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="*" />"
You can add it using:
dotnet add package Selenium.WebDriver.ChromeDriver --version *
When I first added this reference, I saw a warning for this particular package, but it disappeared after I closed and reopened my Visual Studio 2019.
The star means the latest (highest number) stable package will be used as explained here.
Of course you can install the latest version manually (without the wildcard, but selecting a specific version), and then on each 2 major Chrome versions to update the NuGet package reference so that is matches your Chrome version. (87 chromedriver works with 87 and 88 Chrome, but not with 89).
Then the driver is instantiated with this lines:
var driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
This approach removes the need to specify concrete path to chromedriver.exe that will have to be updated.
Reference:
https://www.automatetheplanet.com/webdriver-net50/
If you're getting this error in Visual Studio 2019 and using Selenium.WebDriver.ChromeDriver by jsakamoto, check the version you're referencing in the packages.config file.
<package id="Selenium.WebDriver.ChromeDriver" version="89.0.4389.2300" targetFramework="net45" />
Update your NuGet package to the appropriate version and resolve the issue.
I resolved this issue by simply running Firefox (geckodriver) instead of Chrome:
rsDriver(browser = "firefox")
I got this error after a recent chrome upgrade, and also I recently updated my Mac to Big Sur. Seems cask is not part of brew command, need to use it separately.
brew install --cask chromedriver
You can handle this exception
from selenium.common.exceptions import SessionNotCreatedException
Add this function
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
then call this function
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
For Laravel Dusk
For anyone running into this issue on Laravel Dusk for Chrome/Chromium versions after 114, this is likely caused by Google changing the upstream URLs.
Specifically for Laravel Dusk, this seems to have been fixed in this Dusk issue here, so theoretically all that's needed to fix this properly is a composer require laravel/dusk --with-all-dependencies
, but at least in my case, this would update a lot of dependencies and seems highly likely to break my application. I've asked on that issue what the best course of action is for a legacy Laravel application (Laravel 8 in my case), but in the meantime: downgrading both the Chrome/Chromium browser and the Chrome driver to v114 should be a good enough workaround.
This is easier said than done and it's taken me over a day to figure out how to do it successfully on GitHub Actions, but adding the following to your workflow file should be all you need to get your builds running again:
- name: Downgrade Chrome browser to v114
uses: browser-actions/setup-chrome@v1
with:
chrome-version: 1134343 # Last commit number for Chrome v114
id: setup-chrome
- run: sudo ln -fs ${{ steps.setup-chrome.outputs.chrome-path }} /usr/bin/google-chrome
- name: Downgrade Chrome driver to v114
run: php artisan dusk:chrome-driver `/usr/bin/google-chrome --version | cut -d " " -f3 | cut -d "." -f1`
If you are using Javascript then you can also delete the node_modules folder and also delete the package-lock.json file from the folder.And change the package.json file
define the chrome driver version you want to use ---------
"dependencies": {
"async": "^2.6.1",
"aws-sdk": "^2.380.0",
"chromedriver": "^120.0.0" // like this I have Chrome version 120 so I define 120.0.0
}
And Now run npm i
This is worked me Thanks
The solution is:-
- Check out the chrome version of your chrome.From chrome://settings/help
- Check out which version of ChromeDriver is compatible with your current chrome version from here
- download the compatible one and replace the existing ChromeDriver with a new ChromeDriver.
- Now run the code
It didn't feel like folks were answering the issue here which is: being on the latest version of beta Chrome/Chromium and not seeing the matching chromedriver version
For example, currently as of writing this, Chromium for Mac is Version 86.0.4190.0 (Developer Build) (64-bit) however the latest chromedriver versions listed are
Current stable release: ChromeDriver 83.0.4103.39
Current beta release: ChromeDriver 84.0.4147.30
If you go to https://chromedriver.chromium.org/downloads/version-selection, they provide some pointers on getting a compatible version. One of the last lines near the end mentions trying the ChromeDriver Canary build which leads to how to get it from Chromium browser snapshots.
Of course this goes without saying that using the latest experimental version is likely to have bugs
I faced this problem even after using webdriver manager. I was able to resolve the issue after specifying the exact version of chromedriver that I needed in the webddriver manager.
I was using chrome version 84 and the webdriver manager was installing the latest version of chromedriver, which was 85.0.4183.38.
I made webdriver manager to open the chromedriver version 84.0.4147.30 by writing the following command.
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager(84.0.4147.30).install())
def startBrowser(): global driver if Browser == "chrome": driver = webdriver.Chrome(ChromeDriverManager("83.0.4103.14").install()) elif Browser == 'firefox': driver = webdriver.Firefox(executable_path=GeckoDriverManager().install()) else: driver = webdriver.Chrome(executable_path = "./Driver/chromedriver.exe") driver.get(Application_url) driver.maximize_window() return driver
–
Knesset Steps I took to make it work
- Check your current Chrome version e.g. 81
- Goto tools/nuget package manager
- Select selenium chrome driver
- upgrade/downgrade to the same Chrome-version you have.
Restarting the application should work.
I got this error when the chrome driver was not closed properly. Eg, if I try to find something and click it and it doesn't exist, the driver throws an exception and the thread ended there ( I did not close the driver ).
So, when I ran the same method again later where I had to reinitialize the driver, the driver didn't initialize and it threw the exception.
My solve was simply to wrap the selenium tasks in a try catch and close the driver properly
It is not python related but for C# or dotnet users you might specify driver version in nuget packages. For instance Selenium.WebDriver.ChromeDriver
is a good start point. It should match browser version. In chrome you can check version by accessing
chrome://settings/help
Be informed that it will also affect chrome version on pipeline agents and other developer's computers.
For mac users, this is the best way to solve, Download the chromedriver and then paste that chromedriver in this directory
/usr/local/bin
If this directory is not found to you then from finder click on go then select computer then press command+shift+. (this shows the hidden files in mac) then definitely you will see these directory easily
Find out your current chrome version Go to settings->About chrome Go to URL https://chromedriver.chromium.org/downloads Download and use the compatible version.
you just need to uninstall or delete protractor from node_module and reinstall it.
npm uninstall protractor
npm install protractor
As dylanvanw replied in the "accepted" answer above, a good solution is to install webdriver-manager.
For C#/ASP.NET Core:
Nuget > Browse > webdriver-manager > WebDriverManager: Automatic Selenium WebDriver binaries management for .Net
Example usage:
public abstract class SeleniumTest { protected static IWebDriver driver; ... protected static void InitTestClass (string url, string waitForId) { if (driver == null) { string driverPath = new WebDriverManager.DriverManager().SetUpDriver(new ChromeConfig()); driver = new ChromeDriver(driverPath); driver.Navigate().GoToUrl(url); ...
For java, using pom.xml webdriver version 5.4.1, //not working with chrome version 116...(main version), so we are going to hard code for now; //Next, we will pass it as variable with try catch statement to by bypass the hard coding after its fix //WebDriverManager.chromedriver().setup(); //hardcoded the chrome version WebDriverManager.chromedriver().driverVersion("116.0.5845.96").setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("--remote-allow-origins=*");
options.addArguments("--start-maximized");
driver = new ChromeDriver(options);
What worked for me in Linux Mint -->
Download Google Chrome Browser from official web (.deb file) and install it.
(In my case I did not have Google Chrome installed (just Chromium))
I got a similar problem, i was using Vs code integrated terminal. The solution was to create a venv environment, install selenium in it and do the commands from that.
Referring to @dylanvanw answer. You might still out of luck. I found that you might have a different path that you have installed Python. In my case, I have to move Chromedriver.exe from the cache path (C:\Users\Poom.wdm\drivers\chromedriver\win32\84.0.4147.30) to C:\Python38 then it work!
I found a workaround to download latest version of ChromeDriver via WebDriverManager You could try something like,
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") ;
Simply Update the Chrome browser to the latest version available.
© 2022 - 2024 — McMap. All rights reserved.
Help -> About Google Chrome
and then it started updating chrome to the latest version (I had 81 and updated to 83). Restarted chrome and when I reran the chromedriver it worked. – Delozier