02May 2019

Building a Selenium Framework from Scratch

Web development has increased three-fold compared with what it was years ago. A number of businesses are opting to develop websites to show their presence online. And testing is an important part of this web development process. Agree? Of course, it is. No doubt on that. More than a billion websites are live currently.

We see that a number of tools are being released to help with the development and testing processes. Thanks to the web development experts who are researching and coming up with great ideas every now and then. You can find numerous tooling options in the market. Lots of tools are available to help you make your testing process easy and simple.

In a whole lot of testing tools available out there, Selenium is one of the best tools to date. The growing popularity of Selenium is because of the wide range of features that it offers. Selenium is open-source. You can download it free of cost. It is simple to understand and easy to use. With Selenium, you can perform your test on a variety of programming languages, such as C#, Java, Python, and so on, using its Web Driver API. You can use it for automating mobile devices, including Android and iOS through Appium apart from for web browsers.

Choosing a Framework for Testing

What more do you need for testing? Now, enjoy test automation as you prefer!

Testing teams want to maintain high-quality and also ensure that the final product goes bug-free because they happened to detect bugs. Many a time, it happens that they do not get more time or couldn’t invest more time to create a great framework from scratch.

Speaking of which brings us back to Selenium. Here we will take you through building a great Selenium framework to help automate your testing process.

Some of the steps to building a Selenium framework have been listed out in this article to make your job easier so that you can take a look at the checklist when you get on to work with your framework.

1) How Do You Choose a Programming Language

programming language

This must be the first and foremost concern when you start building a Selenium framework. Think of the programming language that you should be choosing for the same. When it comes to the structure, you need to start thinking of how or what form should your tests be in. It could feature keywords or you could choose to code or BDD, and others.

A number of testers usually prefer to adopt the coding technique. But the real question here what programming language would you be using to write your tests. We can provide you with certain ideas that would help you choose what you need.

You can start by thinking along the lines of the language that your client or customer or your company is using, generally, for developing software. For example, if they are using Python for developing software, then go for it. Also, an interesting part about Python is that it is one of the most popular languages in which the code is being developed these days.

Next, you need to think of the people who apart from you or your team would be using this framework for writing the tests. Think it from the perspective of their proficiency in the programming language that you are planning to choose.

This is where Selenium comes into the bigger picture. You would find that it is open-source and one of the portable software testing frameworks best suited for web apps. When using Selenium, you can think of a variety of programming languages, including Python, C#, Ruby on Rails, Java, and others.

Some experts suggest Java as an excellent choice as it is cross-platform and a favorite among developers. You could easily find code examples and even get help with troubleshooting if you are lost at any point. Whenever a new version of Selenium is released, Java is the top priority.

In case you are thinking of choosing another popular technique of BDD or behavior-driven development, then there are a few things that you need to know about. With BDD, you can enhance the readability of your tests by improving the structure of your test’s flow through the Given, When and Then statements.

Everyone, including domain experts, technical testers and even business testers can make contributions to creating tests, debugging and updating.

Here are a few tools that you can use if you prefer to use BDD for your needs:

  • For C#, it would be SpecFlow.
  • For other major languages, it is usually Cucumber.

Experts recommend using BDD for short-term or smaller projects as it would be highly challenging when you have to write a number of lines of ‘And/And…” within the GWT syntax. Here, Java would be one of the best choices to improve scalability.

2) Choosing a Unit Test Framework

Choosing a unit test framework

Once you have decided with your programming language, the next most important thing is to choose a unit test framework on which this would be based upon. With a unit test framework, it is possible to recommend a class or a method as part of the test that uses annotations.

This framework will also help to carry out assertion or verification. You can also use it for executing test cases from IDE, command line or CI or CD. You can generate logs with it. This framework would also help to produce XML/HTML reports for executing the tests. You can group and prioritize test cases using this framework. And finally, you can execute tests parallelly.

Remember if you are using the Java programming language for writing tests, TestNG would be the best unit test framework as TestNG comes with numerous benefits. Though TestNG might have some resemblance to JUnit, it is stronger than JUnit when it comes to testing integrated classes. Some of the features of TestNG include sequencing, easy annotations, parameterizing and grouping.

TestNG along with its features also comes with all the features of JUnit as well. This helps to get rid of all the limitations that the previous frameworks might come with, providing developers with the ability to write versatile and strong tests.

3) Designing the Architecture of your Framework

Next, comes the architecture of the framework.

It is important to start by building the ‘Selenium Core’ component. This component will help in controlling or managing the browser instances along with the interactions between elements. You can create, eliminate and reuse Web Driver objects with this component. Some experts recommend the use of the Factory design pattern for creating Web Driver objects. With a single Web Driver object, you can drive a browser instance, which moves from one web page to another and this continues.

It might not be necessary that the test writers pay keen attention to how the browser instances get created. All that is required is a Web Driver object with which you can carry out a given test step within the test flow.

4) Building the “Selenium Test” Component

Building the “Selenium Test” component

So where do you think the utilities provided by the Selenium Core go into? This Selenium Test component carries all the test cases using those utilities. As you designed the Selenium core component, you need to work on this test component as well using a page object pattern (POM).

The POM is one of the most preferred patterns in test automation frameworks. One of the reasons why it is widely preferred is because it eliminates code redundancy and helps in reducing testing costs. When you apply POM, you would need to structure the UI elements across pages. These pages would include business flows or actions, which you would be performing on pages. Think of it along the lines that your web app comes with a number of pages, such as Home page, Login page, and register page. You would need to create page objects corresponding to each of these pages.

In case the UI of any of these pages happen to change, you need not fret about updating the tests as it gets done automatically. All you would have to do is refactor these page objects’ code into one place. Here, each class would carry the methods exactly corresponding to the related pages, making it easier for you to define the web elements corresponding to them.

5) Choose a Mechanism for Reporting

Choose a mechanism for reporting

Unless you have a great reporting mechanism, it would not be easy to read the test results. You would need to convert test results into insights, which can produce corrective results instantly. You can find a number of options to help you log your automated tests. In order to report this, you can use testing frameworks, including TestNG and JUnit. These are not in human-readable and need to be accessed using software such as CI or CD servers.

But if you are using third-party libraries, including Allure or ExtentReport, you would be able to create test result reports, which are in human-readable forms. Also, these would include screenshots and pie charts. These come with certain open-source reporting libraries, including ReportNG for Java, which is an HTML reporting plugin for the TestNG framework.

What do you think about the Selenium framework? We would love to hear from you.

Acodez IT Solutions is a web design and web development company in India offering web-design related services to our clients in India and abroad. We are also an SEO agency offering inbound marketing solutions to our clients at affordable prices. For further details, please contact us today.

Looking for a good team
for your next project?

Contact us and we'll give you a preliminary free consultation
on the web & mobile strategy that'd suit your needs best.

Contact Us Now!
Jamsheer K

Jamsheer K

Jamsheer K, is the Tech Lead at Acodez. With his rich and hands-on experience in various technologies, his writing normally comes from his research and experience in mobile & web application development niche.

Get a free quote!

Brief us your requirements & let's connect

Leave a Comment

Your email address will not be published. Required fields are marked *