Tag Archives: automation

TestNG annotations

Tests written with the TestNG framework need to be annotated properly in order to be recognized as tests. A Java class will contain methods, that will either be the actual tests, or methods that perform some actions needed within a test. A class or a method that represent a test, will be annotated with the @Test annotation. A method or class that has this annotation needs to have the ‘public’ visibility. Having this in mind, if the @Test annotation is placed at the class level, all the methods within the class that are ‘public’ will be considered tests, and they will execute accordingly (as long as they don’t have one of the before/after annotations described lower in this post, for which there is a specific behavior). All the other methods, that are private or protected, will not be executed. Also, for this particular case, the public methods don’t even need to have the @TestNG annotation. However if you want to add  attributes to some of the test methods, as described in this post , you will need to place the @Test attribute before each test method that will have the attributes. If you desire to place different attributes to test methods, you should put the @Test annotation next to each of these methods, otherwise, you can place the attributes within the class-level @Test annotation. Continue reading TestNG annotations

Creating the page objects

What is a page object

Simply put, a page object is an object that Selenium uses as a representation of an HTML element. Selenium tests will not interact with HTML code directly, but with objects that use selectors to refer to particular bits of the HTML code.

Defining page objects

You will need to create independent classes for declaring your page objects.  Such a class should group together all the page objects that belong to the same page, or to the same module that is about to be tested. They should be grouped logically and naturally. The tests and page objects should not belong to the same Java class (they should be independent one of the other). This has a great number of advantages, amongst them: avoiding redundant code (having a page object in only one place), availability of a page object to every test class that needs it (every test class that needs an object will access it from the same location), changing of the selector will be done in only one place if the HTML code changes.

A recommended way of declaring a page object is presented here: Continue reading Creating the page objects

CSS Selectors

Identifying HTML elements in order to interact with them within you tests can be done by using CSS Selectors, which use pattern matching to easily find these elements. Below are the most used patterns to identify the elements on a page and examples of their usage: Continue reading CSS Selectors

XPATH selectors

To select HTML elements from your page, you can use XPath selectors, which are basically a set of expressions that will extract the nodes you require. The nodes are obtained by following a path in the HTML document, either downwards from a known node, or upwards (it searches for descendants or ancestors of a known element). To find elements using XPATH, find below what suits your search: Continue reading XPATH selectors

HTML and Selenium. An introduction

HTML elements

An HTML element has the following syntax:

 <element [attribute="value"|...] />

An HTML element in enclosed within a preceding ‘<‘ and a trailing ‘/>’ characters. An HTML element can have none, one or many attributes, depending on its’ type. The attribute has pairs of keys and values to define additional information about the element.

There are a few attributes that can be assigned to any HTML element. Two of them are described here:

  • ID – to specify a unique identifier for the element.
  • CLASS – an element can have one or more classes.

There are a great number of HTML elements, but for the purpose of Selenium testing, the most commonly used ones are presented below.

Common HTML elements

Continue reading HTML and Selenium. An introduction

Setting up the Selenium bits

After the project is created, you need to setup the Selenium dependency, in order to use the library’s functionality. Make sure you always have the latest Selenium libraries available. The constant upgrade of the modern browsers  might make some Selenium features unavailable or not working properly with older library versions.

Browser Releases

To see what browser releases are scheduled in the future, you can check out these links:

Browser Binaries

Continue reading Setting up the Selenium bits