Skip to main content

Posts

Getting Started with Selenium

Getting environment ready: Before we can start writing scripts with selenium lets just see how to get the environment ready for this. I hope that you are already having visual studio installed on your system. Instead of just starting basic things with console program, we will be creating an environment which can later be used to build framework and write tests, otherwise we have to setup the environment again later when we start building framework. So, here it goes... Open visual studio Select File->New->Project as shown below: From new project window, Select visual c# then Select Class Library Enter name, select location and click ok as shown below: Now in solution explorer, under your added project, right click on References Select Manage NuGet Packages... option from window as shown below: From NuGet window install Selenium.WebDriver and Selenium.Support packages as shown below:  Now, add another project i.e. a u...
Recent posts

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 b...

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...

SELENIUM: Test With Usage of Nested Class

In my previous post we learnt about nested classes. So, now this is the time to make use of that in our framework. This is how we should always progress, learn about something and then implement it otherwise there is no use of learning new things. So, let's now create a test where we can use nested class. About test In this test we will try to perform below steps: Navigate to login page Login to application Navigate to Posts->All Posts menu Confirm that we are on "All Posts" page We are already familiar with step 1 and 2. So, we will be only focusing on  steps 3 and 4.   From above code snippet you can see that I have used nested class created in previous post i.e. " LeftNavigation.Posts.AllPosts.Select(browser) ;" As mentioned in previous post, this code will make user navigate to Posts->All Posts page and actual code which makes this happen is in " Select(browser) " method. See that we are passing browser instance as parame...

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: Adding Next Test With Proper Test Structure-2

In previous post we have now refactored our code in a way that now we are not using static objects any more. Also, we have now tests with all required methods in it. Let's add next test to our framework which will be in proper test structure. About test Let's add next test to check that our logout works successfully. In order to do this we need to perform below steps: Navigate to login page Login to application Logout from application Check if logout was successful We have already created code for step 1 and 2. So, we need to add code for steps 3 and 4 only. See the below code snippet first for this.  We have added two test steps here i.e. " homePage.Logout() ;" and " Assert.IsTrue(loginPage.IsCurrentPage() , " Logout unsuccessful") ;".  In first step we are calling logout function of homePage that opens once we login to application successfully. And finally using Assert method we can verify whether we are logged out successfu...

SELENIUM: Adding Next Test With Proper Test Structure-1

As I mentioned in my previous post that now its time to refactor our tests a little bit so that each test is written with proper test structure as required. After refactoring tests we will add one more test to our framework with proper test structure. So, lets do it now. Refactoring tests Till now we have added two tests to our framework i.e.         And Let's refactor these tests first before adding more tests to this framework.  In each method let's log some message so that we come to know how the execution was done. # AssemblyInitialize method:     In this method let's put code to initialize the log so that it can be used throughout the assembly. Before moving to next method let's talk about other refactoring made in this test project. #1: All static classes are made non-static so that we can created instances of page objects instead of directly using them. So, now on we cannot use class directly. Instead we will...