Versions Compared

Key

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

...

  • 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 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.


  • Tests for elements with multiple attributes to be tested should be implemented using a Map.
    Image Removed
  • Web elements will be tested against "mock elements" that contain the attributes we expect to find in the element from the web page.
    • The BaseElement abstract class will contain attributes that are shared by all web elements, and all the other Element classes will extend BaseElement
      Image Added
      Image Added
    • Attributes will be tested by retrieving an attribute from the web element and the mock element. The two attributes will then be compared and checked for equality.
  • Certain tests may have timing issues, so sleep the thread whenever you perform an action that may be asynchronous.
    • Example:
      Image Modified

 

Testing Webpages with Multiple Login Accounts

  • When testing a page using multiple login accounts, each instance of the page should have its own web driver.
  • The instances of the page will be instantiated using a factory with a data provider that exists in the BasePageTest class. The individual web drivers will also be instantiated within the factory.
    Image Added 
    Image Added 

TestNG Tips

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

...