For all your cross-browser, multi-device testing needs, look no further than the powerful combination of Selenium WebDriver and Java.
One of the challenges that developers face is ensuring that their web application works seamlessly across
a different set of devices, browsers, and operating systems platforms. This is where cross-browser testing
plays a very crucial role in testing the web application since it helps in testing across different
combinations. Based on the target market, development and product teams need to chart out a plan for
the various activities involved in cross-browser compatibility testing.
Selenium is an open source, automation testing software used mainly for functional testing of automation
software. It has been rising steadily as one of the most preferred testing tools for its wide range of
browser support and language compatibility.
Selenium – Introduction and WebDriver Interface
For Testing a web application is need, there a couple of Testing frameworks available that automate the
tests performed across different web browsers. Selenium webdriver is a very popular framework that is
primarily used for the automation testing of web applications using different programming languages like
C#, Java, Python etc. It is an open-source tool with which web testing can be performed against popular
browsers like Chrome and Firefox. The framework can also be used if the test has to be performed
on Internet Explorer (latest version or the legacy versions).
Selenium is considered one of the core components of the Selenium framework. Selenium WebDriver API
is a collection of open-source APIs/language-specific bindings that accepts commands and sends them to
the browser, against which the testing is performed. The individual who is responsible for developing the
tests need not bother about the architecture details or other technical specifications of the web browser
since WebDriver acts as an interface between the test suite/test case and web browser.
First of all, you should understand general guidelines of a testing framework independent of front end or back end tests, i.e. components of a framework:
- All the code base should reside inside src/test/java and src/main/java folder should be deleted.
- If you are commiting your codr to any vcs tool, like github, svn, bitbucket, you should exclude target folder.
- Test classes should be separate from your code.
- Integrate your framework with cucumber-jvm, so that other team members(non-coders) are able to understand and write test cases in simple English.
- Make all the mthods static inside a utility class.
- Do not harcode any paths, use System.property(“user.dir”) + remaining path in all the fields which require paths.
- Do not use Constants class for the sake of it. Learn the differemce between config file and a constants class.
- Use a good reporting library.
- Log as much as possible.
- Emails should be sent automatically after execution.
By inculcating above points, you cancreate a generic framework which could be used in all the testable
components,for instance, GUI, API, or ETL testing.
Now,coming back to the concept, best practices for maintaining a GUI framework :
- Use as much css locators as possible since these are faster then xpaths.
- Use Page Object Model with page factory and encapsulate all the page functions and locators inside a page object.
- In your test classes, write short and clear code. Just call the functions inside it either from the page class and page class should call all the functions from Utility class.
- Use good naming conventions for methods, variables. This holds true for generic testing framework as well.
- Clode the browser at the end of your test execution.
- Use explicit waits as much as possibe.
- Make your test execution as fast as possible by writing efficient loops.
- In POM, where every webpage corresponds to Java class, segregate locaters from methods which are using them.
9. Try to avoid XPath as much as you can, use CSS where-ever possible.
10. In case of multilingual sites where same webpage is written for multiple languages, there’s a possibility of different locater for same webelement, we can create properties file to track webelements depending on locale.
The above points holds tru for any GUI testing framework, be it with Selenium-Java, Protractor or any other.