Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 12 Next »

 

Introduction

The Selenium test environment will be set up independent from the project that is being tested and it will have its own GIT repository. The testing framework used is TestNG, and the Selenium tests will be built with Maven (ran with Maven SureFire). The properties file will be generated with Maven AntRun. 

Selenium Documentation

Selenium JavaDocs

TestNG Documentation

TestNG JavaDocs

 

Setting Up Maven Dependencies and Plugins

Sample pom.xml for Maven: pom.xml

Selenium

TestNG

Maven SureFire

Maven AntRun

 

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.
  • In TestNG, test classes are ran in alphabetical order. (The unit tests within each class are ran in alphabetical order as well.)
  • Architecture Example:

 

Setting Up The TestNG Test Suite

TestNG is invoked using a testng.xml file. See TestNG Documentation (testng.xml).

Sample testng.xml file: testng.xml

Note: Tests within a TestNG suite are made up of classes. Classes within a test are executed in alphabetical order while tests are executed in the order listed in the testng.xml file. 

 

Logging

Logging will be done using log4testng. See Logger.java.

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

 

Using Selenium

  • The entire test suite will share one WebDriver. 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.

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

TestNG Tips

  • Printing the xpath of an element after a failed test will help with locating 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.

The End





  • No labels

0 Comments

You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.