Headless Browser Testing using Selenium
Webdriver with PhantomJS
Introduction:
PhantomJS is a Headless Webkit
with JavaScript API. Webkit is the layout engine that Chrome, Safari, and a few
other browsers use. It has fast & native support for various Web Standards:
DOM handling, CSS selector, JSON, canvas and SVG.
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.
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.
PhantomJS is not a Test
framework, it is used only to LAUNCH the tests via a suitable Test Runner.
Setting up of PhantomJS in Linux:
1. Download
PhantomJS tar file
2. Extract PhantomJS
tar file
$ tar xvf
phantomjs-1.9.7-linux-i686.tar.bz2
3.Add PhantomJS
binary file folder to path
$ export
PhantomJS_HOME=/home/selenium /resources/phantomjs-1.9.7-linux-i686/bin
$ export
PATH=$PhantomJS_HOME:$PATH
You’re now ready to write some
code. An easy way to get started is this
example
import
org.openqa.selenium.By;
import
org.openqa.selenium.WebDriver;
import
org.openqa.selenium.WebElement;
import
org.openqa.selenium.support.ui.ExpectedCondition;
import
org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.DesiredCapabilities;
public
class SeleniumPhantomJSExample {
@Test
public static headlessBrowserTest()
{
DesiredCapabilities caps = new DesiredCapabilities();
WebDriver driver =
new PhantomJSDriver(caps);
// And now use this to visit Google
driver.get("http://www.google.com");
// Alternatively the same thing can be done like this
//
driver.navigate().to("http://www.google.com");
// Find the text input element by its name
WebElement element =
driver.findElement(By.name("q"));
// Enter something to search for
element.sendKeys("Cheese!");
// Now submit the form. WebDriver will find the form for us from
the element
element.submit();
// Check the title of the page
System.out.println("Page title is:
" + driver.getTitle());
// Google's search is rendered dynamically with JavaScript.
// Wait for the
page to load, timeout after 10 seconds
(new WebDriverWait(driver,
10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.getTitle().toLowerCase().startsWith("cheese!");
}
});
// Should see: "cheese! - Google Search"
System.out.println("Page title is:
" + driver.getTitle());
//Close the browser
driver.quit();
}
}
Add
below maven dependency to pom.xml
<dependency>
<groupId>com.github.detro.ghostdriver</groupId>
<artifactId>phantomjsdriver</artifactId>
<version>1.1.0</version>
</dependency>
If you are facing any SSL issue. Add below statement to resolve
cap.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, new
String[]{"--web-security=false",
"--ssl-protocol=any","--ignore-ssl-errors=true"});
0 Comments