Skip to main content

SELENIUM: Architecture of Automation Solution


Till now we have learnt about many things related to building a good automation framework. We added few tests too to our framework to see how it works. We also learnt few important things to remember for a good and robust framework.

But before we progress ahead with some other stuff, lets just see which type of  architecture we are using for our automation solution. It is very important to know this so as to make sure that we are building the framework robust and non-brutal and know about what and how things should work.

Keeping this in mind, I think this is right time to know about this.So, below is diagram showing the basic architecture that we are using in this course.





If you see this diagram then you can understand that in our architecture our tests will be utilizing the framework that we are creating, our framework in turn will be utilizing the selenium and in the end selenium will be the only thing that will be directly interacting with the browser. Hence, it is be noted from this architecture that our tests never interacts directly with browser and they do not directly interact with selenium.


Whatever we do in tests basically comes from the functionality that we implement in our framework. This is very important to make sure that our tests are durable and not brutle. This is because whenever there is any change in our application, selenium is not going to be changed, it will remain same but our framework is going to changed in order to implement the changed functionality and finally the tests will remain the same as mostly these will be relying on the framework.


Hence we are creating different abstraction levels here and we make it work in a way that anything at higher level communicates with one level below it only. Hence tests only talks to framework, framework only talks to selenium and selenium only talks to browser.


This is the most important thing as many automation solution in which this type of abstraction is missing, fails or becomes so complex or time consuming process whenever there comes any changes in application.







Thanks for reading this post. See you in next post. Cya.




Comments

Popular posts from this blog

Logging in Selenium

Any application is incomplete until it's activities are traceable. Here comes the use of logging. By logging important actions you can later on track anything you want especially when there are some error situations. It becomes easy to debug the issues if logs are generated properly. Similarly, it is very important that our automation framework generates logs so that whenever any test fails, we can track the issue by tracing it's logs. In this post, I will be explaining you how we can log using log4net in selenium. Before using methods of this library we need to configure this to our application. Let's do this first then. Configuring log4net in selenium: First of all you need to download this library so that this can be used. You can read about log4net and then download it from this link and save the dll file after extracting it to folder that is under your project folder. After downloading this library you need to add references of this in you project. To do ...

SELENIUM: Using Nested Classes

In this post I will be using nested class pattern to make few things easier. e.g. If you see in our test application there is a navigation bar on left side containing various menus i.e. Posts, Pages etc. Further each main menu contains sub-menu e.g. Posts menu contains sub-menues as "All Posts", "Add New", "Categories" and "Tags". In this type of situations, it is good to use nested classes to make things more readable and easy to use. E.g. Suppose I want to access "All Posts" navigation then I would want this to be done like this. " LeftNavigation.Posts.AllPosts.Select(); " i.e. I would want that there would be a class called "LeftNavigation" and when I press '.' (dot) it shows all the main menues in this navigation e.g. "All Posts", "Pages" etc. then I choose " LeftNavigation.Posts " and again when press '.' it shows all the sub-menues inside this Posts menu...

SELENIUM: Using Common Methods in Different Tests

As I mentioned in my previous post that we will create few more tests which will make use of the nested navigation class and common menu selector class to see how we can make use of these. So, let create one more test to check some other navigation e.g. navigating to "Add New" page and to implement this we will make use of the same navigation class and menu selector class. About test: In this test we will write code to implement below steps: Navigate to login page Login to application Navigate to Posts->Add New post page Confirm that we are on right page Again, we are already familiar with step 1 and 2 so, we will be focusing step 3 and 4 only. Before we start writing code for this test let's go through some of the refactoring that is needed MenuSelector class's select methods created in previous post. MenuSelector class created in previous past: We will be refactoring below areas in this class: #1: Used WebDriverWait #2: Removed browser.W...