Skip to main content

SELENIUM: Next Test to Framework


Now, let's add one more test to our framework and see how it grows.

In my previous post we created one basic test which tests that user can successfully login to the application. Let's add next test to same login tests category which will test that user cannot login to application with incorrect credentials and then develop corresponding needed framework.

Second test to Framework

For this we will create test and corresponding framework for below steps:
  • User tries to login with incorrect credentials
  • Verify that the login error message is visible
 As we have already created a LoginTests class under UITests project so, we don't need to add another class as category of this test is same. Just add below test method to this class.



Here, we have created one test method as "User_Cannot_Login_With_Invalid_Credentials". In this method again we have added required steps to test our scenario.

First and second steps are similar to previous test. Here, third step is assert step which is testing whether error message is visible or not when user tries to login with invalid credentials. In this test I am passing password as invalid but you can try any combination which in whole makes credentials invalid.

We have created one method in LoginPage class as "IsErrorMessageShowing" which will be checking whether error message is visible after invalid attempt.

Below is the code snippet of this method.

 In this method we are just checking whether message is visible or not. But we can also check what actually the error message is i.e. whether error message is showing same as we are expecting or not. We can add a separate test for this.

Again in this method you can see that I am locating the web element in the method itself which can be refactored later as I mentioned in my earlier post.

Execution of test:

When you execute this test, as a first step Driver.GoTo method will make us navigate to "http://localhost:26382/wp-login.php". After this in second step LoginPage.Login method will be called. In this method as we are passing invalid password, login won't be successful.

And in third step, in assert we are calling IsErrorMessageShowing method of LoginPage class. It will be true if error message is visible otherwise it will return false. It error message does not show then test will fail with specified error message.


That's it. We have successfully added two tests with corresponding code to our framework.

In next post I will be writing something about the test structure. Till now we are just having one method in our test class i.e. [TestMethod]. But there are some other methods too in unit testing framework which you should be aware of and should be used to make tests more powerful and easy.


Thanks for reading this post. See you in the next post very soon...!!!







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