Headless Browser Testing Using PhantomJSDriver in Selenium WebDriver
Headless Browser Testing Using PhantomJSDriver In Selenium WebDriver
In the earlier post, we have seen some brief explanation on what is headless browser and in this post, we learn how to perform headless browser testing using PhantomJSDriver in Selenium WebDriver. PhantomJSDriver is one of the drivers of Selenium WebDriver. HtmlUnitDriver and PhantomJSDriver are most popular headless browsers.
PhantomJS is used for Headless Browser Testing of Web Applications that comes with in-built GhostDriver. This means that the rendered web pages are never actually displayed.
Advantages:
- Lightweight
- Proxy server support
- Fastest implementation of WebDriver
- Platform Independent
- Allows us to simulate different browsers having different versions.
You could download PhantomJSDriver executable file from here – PhantomJS Driver
Download PhantomJSDriver jar file from here – PhantomJS Jars
Usually, to run Selenium Scripts using Firefox, we initialize the Firefox driver.
WebDriver driver = new FirefoxDriver();
Whereas while running Selenium Scripts using PhantomJSDriver you need to write the below statement
WebDriver driver = new PhantomJSDriver ();
Remaining statements in your script will be as usual.
Let’s see a working example using PhantomJSDriver in Selenium WebDriver:
import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.phantomjs.PhantomJSDriver; import org.testng.annotations.Test; public class HeadlessBrowser { @Test public void phantomJSDriver() throws Exception{ //Set the path of the phantomjs.exe file in the properties System.setProperty("phantomjs.binary.path", "D:\\Selenium\\Drivers\\phantomjs.exe"); // To declare and initialize PhantomJSDriver WebDriver driver = new PhantomJSDriver(); // Download link is http://phantomjs.org/download.html // Set implicit wait driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // Open "Google.com and search SoftwareTestingMaterial.com" driver.get("https://www.google.com"); // To locate the searchbox using its name WebElement element = driver.findElement(By.name("q")); // To enter text "softwaretestingmaterial.com" element.sendKeys("softwaretestingmaterial.com"); // To submit element.submit(); //Click on Software Testing Material link driver.findElement(By.linkText("Software Testing Material")).click(); // Get the title of the site and store it in the variable Title String Title = driver.getTitle(); // Print the title System.out.println("I am at " +Title); } }
Output:
I am at Software Testing Material - A Site for Software Testers PASSED: phantomJSDriver =============================================== Default test Tests run: 1, Failures: 0, Skips: 0 =============================================== =============================================== Default suite Total tests run: 1, Failures: 0, Skips: 0 ===============================================
Different Browser Versions using PhanthomJSDriver:
We could test our scripts on different browser versions using PhanthomJSDriver. Yes, it allows us to choose our preferred browser version. See the below screenshot.
WebDriver driver = new PhanthomJSDriver(BrowserVersion.FIREFOX_3);
I am concluding this post about headless browser testing using PhanthomJSDriver. Check out our other post on how to perform headless browser testing using HtmlUnitDriver in Selenium WebDriver.
As always, feel free to share this post with your friends and colleagues on Facebook, Twitter, and Google Plus!
What is the difference between HTML unit driver and phantomjsdriver
Hi Prajwal, Both HtmlUnitDriver and PhanthomJSDrivr are headless browsers. HtmlUnit Driver uses Rhino JavaScript engine and PhanthomJS uses Webkit javascript engine. We could use any of these two for headless browser testing. There are some other headless browsers but these two are popular ones. HtmlUnitDriver is much faster than PhanthomJSDriver.