Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Selenium

TestNG

Maven SureFire
testng.xml contains the test suite to be run. More explanation below.

Maven AntRun
Writes out the POM version of the Selenium test code to a file that is read and logged as part of the test report, so that we know what version of the test was used.

 

Project Structure

  • Each page in the website will be contained within its own package.
  • Tests for each page can be separated into separate classes for better organization/structure. For example, if a page contains multiple views or different tabs within the page.
  • Order matters: In TestNG, test classes are ran run in alphabetical order. (The unit tests within each class are ran in alphabetical order as well.) If your tests are dependent on one another, they should be named respectively.
  • Architecture Example:

 

Setting Up The TestNG Test Suite

TestNG is invoked using a runs according to the plan specified in the testng.xml file. See TestNG Documentation (testng.xml).

...

Use log4testng.properties to log INFO level messages to the console.

 

Using Selenium

  • WebDriver is the main interface to use for testing, which represents an idealised web browser. The methods in this class fall into three categories:
    • Control of the browser itself
    • Selection of WebElements
    • Debugging aids
  • The entire test suite

    will

    should share one WebDriver so that context can be maintained throughout the test run. This is achieved by creating a base page class (e.g. BasePageTest.java) with a static WebDriver. All other test classes will extend the base page class. The base page class also contains frequently used methods.

    Image Modified
    Image Modified

  • Tests for elements with multiple attributes to be tested will should be implemented using a multi-mapMap.
  • Certain tests may have race conditions, so to avoid timing issues, so sleep the thread whenever you perform an action that might change the pagemay be asynchronous.
  • Example:
    Image RemovedImage Added

TestNG Tips

  • Printing the xpath of an element after a failed test will help with locating locate elements that need to be fixed.
    Sample method for getting the xpath of an element:

    The method should go in the base page class. 
  • StaleElementException: A StaleElementException is thrown when the element you were interacting is destroyed then recreated. Elements in the DOM are often destroyed and recreated when a web page changes dynamically as users interact with it. When this happens the reference to the element in the DOM that you previously had becomes stale and you are no longer able to use this reference to interact with the element in the DOM. You will need to refresh your reference to find the element again. This can be done using a try catch block within a while loop. See example below.
  • In a GWT project and maybe others, xpath might be a more reliable means of finding an element, as opposed to class name. 

The End