Selenium

Selenium is an open source access methods that supports test automation via browsers to web based applications.

Tests written using Selenium API can be written in a variety of languages such as C#, Java and Python.

When using Microsoft Azure DevOps, test automation is easily integrated into your DevOps Build and Release pipelines by including C# based test automation using Selenium.


TestPro Selenium Framework

The TestPro Selenium Framework is a comprehensive wrapper for the Selenium API that provides extensive value added services and improves the reliability and usability of the Selenium API to test writers.

The key features of the TestPro Selenium Framework are:

  1. Reliability – the elements and controls that make up an applications web presentation do not appear instantly. There is also no key flag or status that tells you when the page is complete as the presentation is being managed dynamically by JavaScript. This gives pages a responsive animated look and feel. Searching for, and retrying access to slow to download and render controls is built into the lowest level of the Selenium Frameworks management of the DOM and dramatically improves test reliability.
  2. Error Handling – the use of most Selenium APIs “should” be used within a try/catch block in order to manage errors, trigger retries or invoke special workarounds. The framework implements this consistently.
  3. Viewport Management – before a control such as a button can be clicked the control must be brought into the rendering viewport of the browser. This is a fundamental Selenium requirement and applies especially to long pages or pages rendered on small devices. As a human you would scroll to a control, as a test you cannot. The framework does the job of bringing the control into the viewport when required.
  4. Logging – the Selenium Framework includes a comprehensive logging mechanism of all framework events that is invaluable for test diagnostics.
  5. Selenium Extensions – Selenium imposes some restrictions, such as only being able to interact with controls that are in a displayed state. This is not always the case as modern animated application GUIs can have screen elements that are unseen and yet people interact with them with the mouse based on other visual cues. As an extension to Selenium these controls are interacted with via DOM JavaScript injection. It allows the automation to interact with elements that Selenium cannot. This capability is built into the fabric of the Selenium Framework.
  6. No Positional Data – the Selenium Framework makes it easy to identify the controls and elements needed to drive the test. No positional information is ever used.
  7. No Waiting – Often testers pepper their scripts with wait or sleep commands to take account of timing “issues”. This is rarely the case with the Selenium Framework as there is automatic “sense and retry” built into its lowest layers. Tests are easier to write and debug when they work without needing to worry about technical timing issues.
  8. Locators – Selenium locators are one of the more confusing aspects of using Selenium to identify DOM elements. The Selenium Framework mechanism does not require the use of locators at all. Selenium element identification mechanisms are handled internally by translating all DOM location logic into XPath. The XPath spec that is generated and used is available in the log and can be pasted into the Chrome Dev console for diagnostic use.

Appium

Appium is an access method compatible with Selenium that gives access to testing browser based application on mobile devices.