- How to Setup Selenium with ChromeDriver on Ubuntu 22.04, 20.04 & 18.04
- Step 1 – Prerequisites
- Step 2 – Install Google Chrome
- Step 3 – Installing ChromeDriver
- Step 4 – Download Required Jar Files
- Step 5 – Start Chrome via Selenium Server
- Step 6 – Sample Java Program (Optional)
- Related Posts
- Cron Job: A Comprehensive Guide for Beginners
- How to Install Google Chrome in Pop!_OS
- How to View HTTP Headers in Google Chrome
- 42 Comments
How to Setup Selenium with ChromeDriver on Ubuntu 22.04, 20.04 & 18.04
This tutorial will help you to set up Selenium with ChromeDriver on Ubuntu, and LinuxMint systems. This tutorial also includes an example of a Java program that uses a Selenium standalone server and ChromeDriver and runs a sample test case.
Step 1 – Prerequisites
Execute the following commands to install the required packages on your system. Here Xvfb (X virtual framebuffer) is an in-memory display server for a UNIX-like operating system (e.g., Linux). It implements the X11 display server protocol without any display. This is helpful for CLI applications like CI services.
sudo apt update
sudo apt install -y unzip xvfb libxi6 libgconf-2-4
Also, install Java on your system. Let’s install Oracle Java 8 on your system or use the below command to install OpenJDK.
sudo apt install default-jdk
Step 2 – Install Google Chrome
Now install Latest Google chrome package on your system using the below list commands. Google chrome headless feature opens multipe doors for the automation.
sudo curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
sudo bash -c "echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' >> /etc/apt/sources.list.d/google-chrome.list"
sudo apt -y update
sudo apt -y install google-chrome-stable
Step 3 – Installing ChromeDriver
You are also required to set up ChromeDriver on your system. ChromeDriver is a standalone server that implements WebDriver’s wire protocol for Chromium. The WebDriver is an open-source tool for the automated testing of web apps across multiple browsers.
Find out the Google chrome version installed on your system.
OutputGoogle Chrome 94.0.4606.71
Next, visit the Chromedriver download page and download the matching version of chromedriver on your system.
In my case, Google Chrome 94 is running on my system. So download the following file. You must make sure to download the correct version of a file:
wget https://chromedriver.storage.googleapis.com/94.0.4606.61/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
You can find the latest ChromeDriver on its official download page. Now execute below commands to configure ChromeDriver on your system.
sudo mv chromedriver /usr/bin/chromedriver
sudo chown root:root /usr/bin/chromedriver
sudo chmod +x /usr/bin/chromedriver
Step 4 – Download Required Jar Files
The Selenium Server is required to run Remote Selenium WebDrivers. You need to download the Selenium standalone server jar file using the below commands or visit here to find the latest version of Jar file.
wget https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar
mv selenium-server-standalone-3.141.59.jar selenium-server-standalone.jar
Also, download the testng-6.8.7.jar file to your system.
wget http://www.java2s.com/Code/JarDownload/testng/testng-6.8.7.jar.zip
unzip testng-6.8.7.jar.zip
Step 5 – Start Chrome via Selenium Server
Your server setup is ready. Start Chrome via a standalone selenium server using the Xvfb utility.
Run Chrome via Selenium Server
xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone.jar
Use -debug option at end of the command to start the server in debug mode.
You can also Start Headless ChromeDriver by typing the below command on the terminal.
chromedriver --url-base=/wd/hub
Your Selenium server is now running with Chrome. Use this server to run your test cases written in Selenium using the Google Chrome web browser. The next step is an optional step and doesn’t depend on Step 5.
Step 6 – Sample Java Program (Optional)
This is an optional step. It describes running a single test case using a Selenium standalone server and ChromeDriver. Let’s create a Java program using the Selenium server and Chrome Driver. This Java program will open a specified website URL and check if a defined string is present on the webpage or not.
Create a Java program by editing a file in a text editor.
vim TecAdminSeleniumTest.java
Add the below content to the file.
You can change the URL “https://google.com” with any other URL of your choice, Then also change the search string like “I’m Feeling Lucky” used in the above Java program. Save your java program and execute it. First, you need to set the Java CLASSPATH environment variable including the selenium-server-standalone.jar and testng-6.8.7.jar. Then compile the java program and run it.
export CLASSPATH=".:selenium-server-standalone.jar:testng-6.8.7.jar"
javac TecAdminSeleniumTest.java
java TecAdminSeleniumTest
You will see the results below. If the defined search string is found, You will get the message “Pass” and if the string is not found on the webpage, you will get the “Fail” message on the screen.
Related Posts
Cron Job: A Comprehensive Guide for Beginners
How to Install Google Chrome in Pop!_OS
How to View HTTP Headers in Google Chrome
42 Comments
Hello, thank you for the tutorial but the chrome browser didn’t start for me, it seems like it I started in headless mode
when I run this command :
“xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone.jar”
I got this :
11:52:18.535 INFO [GridLauncherV3.parse] – Selenium server version: 3.141.59, revision: e82be7d358
11:52:18.615 INFO [GridLauncherV3.lambda$buildLaunchers$3] – Launching a standalone Selenium Server on port 4444
2022-03-01 11:52:18.659:INFO::main: Logging initialized @324ms to org.seleniumhq.jetty9.util.log.StdErrLog
11:52:18.900 INFO [WebDriverServlet.] – Initialising WebDriverServlet
11:52:18.984 INFO [SeleniumServer.boot] – Selenium Server is up and running on port 4444 No errors no crash but chrome didn’t start.
with this command:
sudo curl -sS -o – https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add I was getting this error:
E: This command can only be used by root.
curl: (23) Failed writing body (1313 != 1396) This was the fix:
sudo curl -sS -o – https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add Adding ‘sudo’ before apt-key add
Hello , thank you for the tutorial but the chrome browser didn’t start for me , it seems like it i started in headless mode,
when i run this command :
“xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone.jar”
I got this :
11:52:18.535 INFO [GridLauncherV3.parse] – Selenium server version: 3.141.59, revision: e82be7d358
11:52:18.615 INFO [GridLauncherV3.lambda$buildLaunchers$3] – Launching a standalone Selenium Server on port 4444
2022-03-01 11:52:18.659:INFO::main: Logging initialized @324ms to org.seleniumhq.jetty9.util.log.StdErrLog
11:52:18.900 INFO [WebDriverServlet.] – Initialising WebDriverServlet
11:52:18.984 INFO [SeleniumServer.boot] – Selenium Server is up and running on port 4444 No errors no crash but chrome didn’t start
Thanks for the excellent tutorial, I finished the Selenium project I was working on. I am using WSL and it used to launch my desktop browser (Brave) when running the AWS CLI SSO login, for example, but now the AWS CLI SSO login launches a Chrome window which doesn’t have any of my data saved in it like Brave does. Do you have any idea how I can reset so that WSL launches Brave again like before rather than Chrome? I deleted the chromedriver but that made no difference. Any advice is much appreciated 🙂
Turns out it was as simple as setting an environment variable named BROWSER with the value being the path to my Brave exe 🙂
This command is incorrect: sudo echo «deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main» >> /etc/apt/sources.list.d/google-chrome.list It uses sudo which means it’s designed for non-root accounts, but the way it’s written the redirection happens before sudo or echo are run, which means it’s run as the current user, resulting in a “Permission denied” error. That command would only work if it’s run by root, but then you wouldn’t need sudo. For it to work for non-root accounts, the entire command has to be wrapped in a shell that is invoked with sudo: sudo bash -c «echo ‘deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main’ >> /etc/apt/sources.list.d/google-chrome.list»
Hello Rahul, Its not working yet I run this cmd ——– xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone.jar I got this ——Error: Unable to access jarfile selenium-server-standalone.jar Regards
V
–
Use Version of selenium-server -standalone jar files. For eg: xvfb-run java -Dwebdriver.chrome.dr iver=/usr/bin/chromedriver -jar selenium-server-standalone-3.141.59.jar
I don’t see browser running when I execute below command
xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone3.13.0.jar
Users your inputs please..
Browser will open, once you run the test case. In the given example, remove “chromeOptions.addArguments(“–headless”);” from script to launch a web browser.
Worked with few changes on Ubuntu 20.
sudo curl -sS -o – https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
=>
curl -sS -o – https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone.jar
=>
xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone-3.13.0.jar Thanks for your post.
Input
xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone-3.141.59.jar Output
Command ‘xvfb-run’ not found, but can be installed with:
apt install xvfb Input
apt install xvfd Output
E: Unable to find xvfd package Thanks 🙂
hi, I am executing my automation scripts on oneops cloud application. To execute these automation scripts we need to have chrome driver. In the oneops application we have Linux64 bit OS is available. For this OS, i downloaded the relevant chrome driver and placed in a specific path. In my automation script I gave this specific path. I developed a jar file with all my automation scripts using looper\jenkins. Now I am executing this jar file in the putty(linux) machine. However an error message chromedriver is not present in the specified path is displaying though the driver is present in the specified path. This chrome driver for Linux is of file type (not .exe ) and placed this driver in a path. I developed these automation scripts using selenium testng. Please let me know why this error message of chrome driver not present is displaying. Also if any one knows how to install chrome driver in oneops cloud application for Linux OS, please do let me know. Thanks Regards
K.Radhakrishna Reddy
Hello! Thanks for the great article. However I am quite stuck with the error below. PHP Fatal error: Uncaught PHPUnit_Extensions_Selenium2TestCase_WebDriverException: Expected browser binary location, but unable to find binary in default location, no ‘moz:firefoxOpti
ons.binary’ capability provided, and no binary flag set on the command line I got both geckodriver and chromedriver on usr/bin/* . Thank you
Thank you, your guide comes up first in google search results! congratulations! however, after following your steps, command “xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone.jar” gives me an error: “Error: Unable to access jarfile selenium-server-standalone.jar”
I have managed(I think so) to run it using line from comments below: “xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone-3.13.0.jar” but now I get new problems.
When I try : “java TecAdminSeleniumTest” I get the error messages: “TecAdminSeleniumTest.java:3: error: package org.openqa.selenium does not exist
import org.openqa.selenium.WebDriver”
Hi, Thanks for the great article. Couple of corrections needed:
1. Switch to root user from Step1
2. Step 5: xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone-3.13.0.jar (version number missed out)
3. Step 6: export CLASSPATH=”.:selenium-server-standalone-3.13.0.jar:testng-6.8.7.jar” (Selenium Server version number missed out) Could you please make this changes to your article? Thank you!