Skip navigation links

TestNG Selenium 0.9.2 API

Overview

See: Description

Packages 
Package Description
com.github.jsdevel.testng.selenium
Top level classes to use.
com.github.jsdevel.testng.selenium.annotations.driverconfig
Annotations used to configure the chosen WebDriver.
com.github.jsdevel.testng.selenium.annotations.drivers
Annotations used to set the WebDriver used for a particular test run.
com.github.jsdevel.testng.selenium.annotations.screensizes
Annotations used to set the screen size for a particular test run.
com.github.jsdevel.testng.selenium.config
Configuration classes used to store configuration values.
com.github.jsdevel.testng.selenium.exceptions
Exceptions thrown by TestNG-Selenium.

Overview

Remove the TestNG Selenium boilerplate.
  1. Overview
  2. Project Goals
  3. Maven Dependency
  4. Writing Suites
  5. Writing a Page Factory
  6. Writing a Page Object
  7. Configuring

Project Goals

Maven Dependency

Writing Suites

In each of your suite classes, extend AbstractSuite and pass your PageFactory as a generic type argument.


AbstractSuite provides a getPageFactory method to create the page factories passed in as generic type arguments. In this example, the page factory passed as a generic type on line 7 is returned by getPageFactory.

Writing a Page Factory

A PageFactory is nothing more than an interface:


Each method declared in a PageFactory should return a sub class of AbstractPage. This allows TestNG-Selenium to do some cool things when initializing your page objects, like navigating to them when WebDriver has been created, wiring up annotated fields using Selenium's PageFactory initializer, and validating that the URL currently being viewed by WebDriver is valid for the requested page. This approach also allows you to avoid boilerplate by letting TestNG-Selenium manage your page factory's lifecycle.

Writing a Page object.

  1. Create a class I.E. GoogleHomePage
  2. Extend com.github.jsdevel.testng.selenium.AbstractPage.
  3. Pass your page object's type, and the page factory used to create it as generic type arguments to AbstractPage.
  4. Optionally add WebElement fields annotated with @FindBy (see Google's PageFactory pattern.).
If you need to do something before validation occurs, such as wait for requests, or poll a global javascript variable, you can override AbstractPage#handlePageInitialized().

Configuring

TestNG-Selenium may be configured in one of 2 ways: In general, annotation based configuration overrides system based configuration on a per test basis.

System Based Configuration

Here is a list of the system properties recognized by TestNG-Selenium with their default values:

Annotation Based Configuration

Here is an example of how we can override a system property using an annotation for a single test run. For the full list of supported annotations, see package contents under com.github.jsdevel.annotations.

Skip navigation links

Copyright © 2015. All rights reserved.