In most of the web application we have few set of actions which are
always executed in the series of actions. Rather than writing those actions
again and again in our test, we can club those actions in to a method and then
calling that method in our test script. Modularity avoids duplication of code.
In future if there is any change in the series of action, all you have to do is
to make changes in your main modular method script. No test case will be
impacted with the change.
Steps to follow:
Look for repeated functionality in
your application for example the ‘login’ functionality. We can simple wrap this
functionality in a method and we can give it a sensible name.
1. Create a ‘New Package‘
file and name it as ‘appModule’, by right
click on the Project and select New > Package. We will be creating
different packages for Page Objects, Utilities, Test Data, Test Cases and
Modular actions. It is always recommended to use this structure, as it is easy
to understand, easy to use and easy to maintain.
2. Create ‘New Class‘
and name it as SignIn_Action
by right click on package ‘appModule‘
and select New > Class. It will add new class ‘SignIn_Action’ under
package ‘appModule’.
3. Now create a Public Static Void Method and name it as Execute and
club the following steps in to it:
Enter
Username
Enter
Password
Click on the Sign In button
This method will not have any Argument (driver) and Return value as it is a void method.
package appModule;
import
org.openqa.selenium.WebDriver;
import pageObject.Login_Page;
public class SignIn_Action{
public static void Execute(WebDriver
driver){
Login_Page.txtbx_UserName(driver).sendKeys("testuser_1@gmail.com");
Login_Page.txtbx_Password(driver).sendKeys("Test@123");
Login_Page.btn_Login(driver).click();
}
}
4. Create a New Class
and name it as Module_TC
by right click on the ‘automationFramework‘package
and select New > Class. We will be creating
all our test cases under this package.
Now
convert old PageObjectModel test case in
to the new Module based test case.
package automationFramework;
import
java.util.concurrent.TimeUnit;
import
org.openqa.selenium.WebDriver;
import
org.openqa.selenium.firefox.FirefoxDriver;
import
appModule.SignIn_Action;
import pageObject.Home_Page;
public class Module_TC {
private static WebDriver driver = null;
public static void main(String[] args)
{
driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10,
TimeUnit.SECONDS);
driver.get("ApplicationURL");
// Use your module
SignIn now
SignIn_Action.Execute(driver);
System.out.println(" Login
Successfully.");
Home_Page.lnk_LogOut(driver).click();
driver.quit();
}
}
We will notice that call to SignIn_Action will automatically execute
all the steps mentioned under it.
No comments:
Post a Comment