Is Chrome installation needed or only chromedriver when using Selenium?
This error message...
Exception occurred: Failed initializing web driver: Message: unknown error: cannot find Chrome binary (Driver info: chromedriver=2.40.565498 (ea082db3280dd6843ebfb08a625e3eb905c4f5ab),platform=Windows NT 10.0.14393 x86_64)
...implies that the ChromeDriver was unable to find the Chrome binary while trying to initiate a new new Browsing Context i.e. Chrome Browser session.
As per the documentation with in the wiki page of ChromeDriver:
ChromeDriver is a standalone server which earlier implemented the WebDriver's wire protocol but slowly and gradually shifting it's implementation as per WebDriver standard.
The ChromeDriver consists of three separate pieces.
- There is the browser itself i.e. chrome
- The language bindings provided by the Selenium project i.e. the driver
- An executable downloaded from the Chromium project which acts as a bridge between
chrome
and thedriver
which is calledchromedriver
and we refer to it as theserver
.
- In generic scenarios the
server
expects you to have Chrome installed in the default location for each system:- Linux: /usr/bin/google-chrome 1
- Mac: /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
- Windows XP: %HOMEPATH%\Local Settings\Application Data\Google\Chrome\Application\chrome.exe
- Windows Vista and newer: C:\Users\%USERNAME%\AppData\Local\Google\Chrome\Application\chrome.exe
Note: 1: For Linux systems, the ChromeDriver expects /usr/bin/google-chrome to be a symlink to the actual Chrome binary.
You can find a detailed discussion on overriding the default Chrome binary location in WebDriverException: unknown error: cannot find Chrome binary error with Selenium in Python for older versions of Google Chrome
Solution
So ideally to execute your tests using ChromeDriver / Chrome combo you need to:
- Install the full-blown google-chrome browser.
- Download the compatible version of
chromedriver.exe
- Quick installation of ChromeDriver:
- Mac users with Homebrew:
brew tap homebrew/cask && brew cask install chromedriver
- Debian based Linux distros:
sudo apt-get install chromium-chromedriver
- Windows users with Chocolatey installed:
choco install chromedriver
- Mac users with Homebrew:
- 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 for ChromeDriver and Chrome Browser and the log message “Only local connections are allowed”
- WebDriverException: Message: Service /usr/lib/chromium-browser/chromedriver unexpectedly exited on Raspberry-Pi with ChromeDriver and Selenium
Reference
You can find a detailed discussion in:
Users provided relevant link to confirm that, "YES" a full Chrome installation is needed in addition to the actual chromedriver.
Link: https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver