What is the relationship between chrome binary and chrome driver? - selenium

When I use chrome driver, is it equivalent to using chrome driver to call chrome binary?
chrome binary path:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome
Question background:
When I use wdio test my project, I configure the binary parameter of goog: chromeOptions .
When I filled in chromedriver path。and I got exception
Chrome failed to start: exited abnormally.

Related

How to start Chrome in a real browser with Selenium

I want to launch Chrome as real browser, with Selenium.
I want to use Chrome extensions, so I want to launch a real browser instead of headless Chrome.
On Mac, this code will successfully launch the Chrome browser
# Selenium ruby
options = Selenium::WebDriver::Chrome::Options.new
::Selenium::WebDriver.for :chrome, options: options
However, when I run the same code on Ubuntu, I get an error.
# error
unknown error: Chrome failed to start: exited abnormally. (Selenium::WebDriver::Error::UnknownError)
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
When I tried to call the command directly to chrome, I got the following error.
$ google-chrome
No protocol specified
[16445:16445:0220/022600.429383:ERROR:browser_main_loop.cc(1438)] Unable to open X display.
Please Help me.

How do I get version of Chrome on Selenium Node?

I'm learning how to run tests on SeleniumGRID.
I have problem with specifying the version of Chrome browser.
I have 1 Selenium Hub and 1 Selenium Node connected to the Hub.
Selenium Node has Chrome browser. The version of browser is:
85.0.4183.102
If I use:
DesiredCapabilities capability = new DesiredCapabilities();
capability.setBrowserName("chrome");
capability.setCapability("platform", "Linux");
it will work fine. But if I add:
capability.setCapability("version", "85.0");
I will get error:
org.openqa.selenium.WebDriverException: Error forwarding the new session cannot find : Capabilities {browserName: chrome, platform: LINUX, version: 85.0}
What should I put in version to run it?
I was trying various possibility (85, 85.0, 85.0.4183.102) but neither of them worked.
I think it's because Node probably doesn't have specified the Chrome version.
I ran the Node with configuration in json file. Then I was able to specify the Chrome version in this json file.
And then I was able to run tests with specified chrome version.

Getting webdriver exception with selenium chrome

I am trying to launch the chrome browser and open my site login page,
so once the login pop up appears then this error comes and sometimes this error is not coming at the time login pop up,its coming middle of tests run that is after login has been done and tests starts running
I am using Testng,also in some of code lines I have used Thread.sleep
ChromeVersion : 75
ChromeDriver : 2.46 (Latest version of chrome driver giving some malicious protect error,so using this one)
Error : org.openqa.selenium.WebDriverException: java.net.SocketException: Connection reset
Change your chrome driver version (ChromeDriver 2.46 NOT Supports ChromeVersion 75).
See full documentation:
http://chromedriver.chromium.org/downloads
ChromeDriver 2.46 Supports Chrome v71-73
ChromeDriver 75.0.3770.8 Supports Chrome version 75
ChromeDriver 75.0.3770.90 Supports Chromeversion 75
ChromeDriver 75.0.3770.140 Supports Chrome version 75

Protractor-selenium error message : "gl_surface_egl.cc eglInitialize D3D9 failed with error EGL_NOT_INITIALIZED"

I am using protractor to test a web application.
I have encountered an error message from cmd saying:
ERROR : gl_surface_egl.cc(953) eglInitialize D3D9 failed with error EGL_NOT_INITIALIZED
I am guessing the error may have raised due to version mismatch of chrome driver.
This error message...
ERROR : gl_surface_egl.cc(953) eglInitialize D3D9 failed with error EGL_NOT_INITIALIZED
...implies that there was an error with GPU decoding.
Your main issue is the incompatibility between the version of the binaries you are using.
As you are using ChromeDriver and Chrome Browser you must ensure that the binaries are compatible as per the entries below:
ChromeDriver v2.27 : Supports Chrome v54-56
ChromeDriver v2.28 : Supports Chrome v55-57
ChromeDriver v2.29 : Supports Chrome v56-58
ChromeDriver v2.30 : Supports Chrome v58-60
ChromeDriver v2.31 : Supports Chrome v58-60
ChromeDriver v2.32 : Supports Chrome v59-61
ChromeDriver v2.33 : Supports Chrome v60-62
ChromeDriver v2.34 : Supports Chrome v61-63
ChromeDriver v2.35 : Supports Chrome v62-64
ChromeDriver v2.36 : Supports Chrome v63-65
ChromeDriver v2.37 : Supports Chrome v64-66
ChromeDriver v2.38 : Supports Chrome v65-67
ChromeDriver v2.39 : Supports Chrome v66-68
ChromeDriver v2.40 : Supports Chrome v66-68
ChromeDriver v2.41 : Supports Chrome v67-69
ChromeDriver v2.42 : Supports Chrome v68-70
ChromeDriver v2.43 : Supports Chrome v69-71
ChromeDriver v2.44 : Supports Chrome v69-71
ChromeDriver v2.43 : Supports Chrome v69-71
ChromeDriver v2.45 : Supports Chrome v70-72
ChromeDriver v2.46 : Supports Chrome v71-73
ChromeDriver v73 : Supports Chrome v73
ChromeDriver v74 : Supports Chrome v74
ChromeDriver v75 : Supports Chrome v75
ChromeDriver v76 : Supports Chrome v76
ChromeDriver v77 : Supports Chrome v77
ChromeDriver v78 : Supports Chrome v78
ChromeDriver v79 : Supports Chrome v79
ChromeDriver v80 : Supports Chrome v80
ChromeDriver v81 : Supports Chrome v81
ChromeDriver v83 : Supports Chrome v83
ChromeDriver v84 : Supports Chrome v84
References
Hardware Acceleration doesn't work on Chrome anymore. (AMD Xpress 1250)
Python Selenium ChromeDriver error message: EGL_NOT_INITIALIZED

Which ChromeDriver version is compatible with which Chrome Browser version?

Actually I'm a bit confused. Although I read several resources about this.
For having a test of Selenium 3 using ChromeBrowser we need an extra app called ChromeDriver.
I found this text from GitHub:
ChromeDriver is only compatible with Chrome version 12.0.712.0 or
newer. If you need to test an older version of Chrome, use Selenium RC
and a Selenium-backed WebDriver instance.
My question is are all ChromeDriver versions compatible with all Chrome version? No conflict between each version?
Where can I find documentation of all versions matching between the ChromeDriver & ChromeBrowser?
After 2.46, the ChromeDriver major version matches Chrome
chromedriver chrome
76.0.3809.68 76
75.0.3770.140 75
74.0.3729.6 74
73.0.3683.68 73
It seems compatibility is only guaranteed within that revision.
If you need to run chromedriver across multiple versions of chrome for some reason, well, plug the latest version number of chrome you're using into the Chromedriver version selection guide, then hope for the best. Actual compatibility will depend on the exact versions involved and what features you're using.
Older version compatibility matrix
Here is a chart of the compatibility between chromedriver and chrome.
This information can be found at the Chromedriver downloads page.
chromedriver chrome
2.46 71-73
2.45 70-72
2.44 69-71
2.43 69-71
2.42 68-70
2.41 67-69
2.40 66-68
2.39 66-68
2.38 65-67
2.37 64-66
2.36 63-65
2.35 62-64
2.34 61-63
2.33 60-62
---------------------
2.28 57+
2.25 54+
2.24 53+
2.22 51+
2.19 44+
2.15 42+
All versions are not cross-compatible.
For example, we had a bug today where chromedriver 2.33 was trying to run this on Chrome 65:
((ChromeDriver) driver).findElement(By.id("firstName")).sendKeys("hello")
Due to the navigation changes in Chrome 63, updated in Chromedriver 2.34, we got back
unknown error: call function result missing 'value'
Updating to Chromedriver 2.37 fixed the issue.
I found, that chrome and chromedriver versions support policy has changed recently.
As stated on downloads page:
If you are using Chrome version
please download chromedriver
Chrome v107
ChromeDriver 107.0.5304.18
Chrome v106
ChromeDriver 106.0.5249.61
Chrome v105
ChromeDriver 105.0.5195.52
Chrome v104
ChromeDriver 104.0.5112.79
Chrome v103
ChromeDriver 103.0.5060.134
Chrome v102
ChromeDriver 102.0.5005.61
Chrome v101
ChromeDriver 101.0.4951.41
Chrome v100
ChromeDriver 100.0.4896.60
Chrome v99
ChromeDriver 99.0.4844.51
Chrome v98
ChromeDriver 98.0.4758.102
Chrome v97
ChromeDriver 97.0.4692.71
Chrome v96
ChromeDriver 96.0.4664.45
Chrome v95
ChromeDriver 95.0.4638.69
Chrome v94
ChromeDriver 94.0.4606.113
Chrome v93
ChromeDriver 93.0.4577.63
Chrome v92
ChromeDriver 92.0.4515.107
Chrome v91
ChromeDriver 91.0.4472.101
Chrome v90
ChromeDriver 90.0.4430.24
Chrome v89
ChromeDriver 89.0.4389.23
Chrome v88
ChromeDriver 88.0.4324.96
Chrome v87
ChromeDriver 87.0.4280.88
Chrome v86
ChromeDriver 86.0.4240.22
Chrome v85
ChromeDriver 85.0.4183.87
Chrome v84
ChromeDriver 84.0.4147.30
Chrome v83
ChromeDriver 83.0.4103.39
Chrome v81
ChromeDriver 81.0.4044.69
Chrome v80
ChromeDriver 80.0.3987.106
Chrome v79
ChromeDriver 79.0.3945.36
Chrome v78
ChromeDriver 78.0.3904.105
Chrome v77
ChromeDriver 77.0.3865.40
Chrome v76
ChromeDriver 76.0.3809.126
Chrome v75
ChromeDriver 75.0.3770.140
Chrome v74
ChromeDriver 74.0.3729.6
Chrome v73
ChromeDriver 73.0.3683.68
older version of Chrome
see Barett's anwer
There is general guide to select version of crhomedriver for specific chrome version: https://sites.google.com/a/chromium.org/chromedriver/downloads/version-selection
Here is excerpt:
First, find out which version of Chrome you are using. Let's say you have Chrome 72.0.3626.81.
Take the Chrome version number, remove the last part, and append the result to URL "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_". For example, with Chrome version 72.0.3626.81, you'd get a URL "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_72.0.3626".
Use the URL created in the last step to retrieve a small file containing the version of ChromeDriver to use. For example, the above URL will get your a file containing "72.0.3626.69". (The actual number may change in the future, of course.)
Use the version number retrieved from the previous step to construct the URL to download ChromeDriver. With version 72.0.3626.69, the URL would be "https://chromedriver.storage.googleapis.com/index.html?path=72.0.3626.69/".
After the initial download, it is recommended that you occasionally go through the above process again to see if there are any bug fix releases.
Note, that this version selection algorithm can be easily automated. For example, simple powershell script in another answer has automated chromedriver updating on windows platform.
For starters, all ChromeDriver versions are not compatible with all versions of Chrome.
Sometimes I wake up, run my script, if it breaks, I update the driver. Then it works. Chrome has quietly updated itself without telling me.
For a starting point of finding which chromedrivers go with which chrome versions
this link brings you to the current release notes. You can look at previous release notes for earlier versions.
https://chromedriver.storage.googleapis.com/2.26/notes.txt
----------ChromeDriver v2.26 (2016-12-09)----------
Supports Chrome v53-55
This page will show you the current release
https://sites.google.com/a/chromium.org/chromedriver/downloads
The Chrome Browser versión should matches with the chromeDriver versión.
Go to : chrome://settings/help
How do I confirm I'm using the right chromedriver?
Go to the folder where you have chromeDriver
Open command prompt pointing the folder
run: chromeDriver -v
In case of mine, I solved it just by npm install protractor#latest -g and npm install webdriver-manager#latest. I am using chrome 80.x version. It worked for me in both Angular 4 & 6
At the time of writing this I have discovered that chromedriver 2.46 or 2.36 works well with Chrome 75.0.3770.100
Documentation here: http://chromedriver.chromium.org/downloads states align driver and browser alike but I found I had issues even with the most up-to-date driver when using Chrome 75
I am running Selenium 2 on Windows 10 Machine.
This is a helpful website listing the mapping for the latest releases of Chrome -
https://www.uitests-chromedrivermapping.com