IntelliJ IDEA is a popular IDE (Integrated Development Environment) written in Java and very popular amongst developers coding in Java or other JVM languages such as Kotlin, Scala, and Groovy.
The aim of this article is to provide an overview on how to use IntelliJ together with WebDriver automated testing.
We'll show you how to install IntelliJ, configure it with the correct (Selenium) dependencies and how to run your very first test, straight from inside the IDE.
Table of Contents
How can I set up and configure IntelliJ IDEA for Selenium Testing?
To install IntelliJ, please go to the JetBrains website and pick an edition that you are comfortable with.
At the time of writing, you can choose between the Community Edition (open source) or Ultimate Edition (free trial).
The installation process is straightforward on either Windows, macOS or Linux. Once installed, the IDE will install a JDK to be able to build and run Java based (web-)apps.
If you are more comfortable with installing a JDK or JRE yourself, you can so through various download sites, for example Oracle's or OpenJDK.
Once installed, you can create a new project and accept all the default settings provided by the IDE.
How can I start a new IntelliJ project with Selenium?
Once you've installed IntelliJ IDEA (Community or Ultimate), you can create a new project.
Simply configure it as a Java project and accept all the default settings. When done, you should see a file opened up with a simple Java class.
Next, we can configure IntelliJ to add Maven as a dependency manager. Right click on the project name and click Add Framework Support, choosing Maven as your dependency manager.
The IDE should open a XML filled (called pom.xml
) which should contain a section called dependencies.
We will need to add a new dependency with groupId: org.seleniumhq.selenium
, artifactId: selenium-java
and version: 3.141.59
(or whichever version you prefer).
Using Chromedriver, Safaridriver, OperaDriver, Geckodriver with IntelliJ
Depending on which browser(s) you want to test on, you'll need to install or configure various drivers associated with each browser.
Below is a list of the most popular browsers, each with their respective WebDriver dependency.
- Internet Explorer: IEDriver
- Microsoft Edge: MicrosoftEdgeDriver
- Google Chrome: chromedriver
- Firefox: geckodriver
- Safari: safaridriver
- Opera: operadriver
Each of these (third-party) drivers can be downloaded from the browser vendor's website, with the exception of IEDriver which is hosted by the Selenium project.
To use for example GeckoDriver in your Java project, you can set up an environment variable such as webdriver.gecko.driver
:
How do I use JUnit with IntelliJ and Selenium WebDriver?
While there are various other, popular, test frameworks available for Java, we'll focus on JUnit because is offers various advantages:
- JUnit is easy to use
- JUnit is included by default with IntelliJ
Create a new JUnit test by using IntelliJ: simply press option + enter
or control + enter
to open the "intention action" menu. From there you can create a test. A dialog will open where you can select JUnit.
We can now create a basic JUnit test in the IDE. The example below shows a simple example on how to do this. This does not follow best practices such as the PageObject pattern:
import static org.junit.Assert.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.junit.Test;
public class CheckTestingBotTest {
@Test
public void site_header_is_on_home_page() {
WebDriver browser;
//Firefox's geckodriver *requires* you to specify its location.
System.setProperty("webdriver.gecko.driver", "c:\\my-dir\\geckodriver.exe");
browser = new FirefoxDriver();
browser.get("https://testingbot.com");
WebElement header = browser.findElement(By.id("header"));
assertTrue((header.isDisplayed()));
browser.close();
}
}
This simple example will use the Geckodriver on your computer to start a Firefox browser, navigate to TestingBot and check if the header of the page is displayed.
The test will pass or fail and then close the Firefox browser.
To run the test, you can use the right-click context menu from the test method code signature, or use Ctrl-Shift-R
to run the test.
How can I run JUnit Selenium tests in the Cloud?
TestingBot provides a cloud based Selenium grid with over 3000 browser combinations.
To run your JUnit test with IntelliJ and Selenium on a remote browser grid, all you need to do is use a class called RemoteWebDriver.
With this RemoteWebDriver class, you can instruct a remote grid of browsers to allocate a browser, according to the capabilities you desire (DesiredCapabilities).
The test will send commands back and forth to the remote browser, instructing the browser as if it was running on your own machine.
The example of using a cloud based Selenium grid is that you can run multiple tests simultaneously, reducing your total test duration.
Another advantage is that you do not need to set up, configure and maintain virtual machines with various browsers, versions and operating systems.
To connect to the TestingBot browser grid from IntelliJ IDEA, please see the simple example below.
import junit.framework.TestCase;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.*;
import java.net.URL;
import java.util.concurrent.TimeUnit;
public class SimpleTest extends TestCase {
private WebDriver driver;
@Before
public void setUp() throws Exception {
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("version", "latest");
capabilities.setCapability("platform", Platform.WINDOWS);
capabilities.setCapability("name", "Testing Selenium");
this.driver = new RemoteWebDriver(
new URL("http://key:secret@hub.testingbot.com/wd/hub"),
capabilities);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testSimple() throws Exception {
this.driver.get("http://www.google.com");
assertEquals("Google", this.driver.getTitle());
}
@After
public void tearDown() throws Exception {
this.driver.quit();
}
}
We've covered the basics in setting up, configuring and running JUnit tests with IntelliJ IDEA. For more information, please head over to our JUnit documentation.