Showing posts with label Selenium Basics. Show all posts
Showing posts with label Selenium Basics. Show all posts
Friday, May 20, 2016
Wednesday, May 18, 2016
MindMap for TestNG
In this post, basics of TestNG are described with mindmap. TestNG is an open source automation framework inspired from jUnit but having additional features making it more robust compared to jUnit. It is also used extensively with selenium automation. TestNG.xml is not explained in detail in this post, as it is an important concept and will be covered in a separate post. Hope you like this mind map.
Monday, May 16, 2016
Mindmap for understanding Selenium IDE
Saturday, February 20, 2016
How to use maven to create selenium project
In this article, we will understand the basics of maven and how to create maven project for Selenium WebDriver in eclipse.
Problem Statement of this article:
- Understanding the use of maven for creating a selenium
Project.
- Installing maven plug-in for eclipse
- Creating a maven Project in eclipse
- Adding dependencies for Selenium
Understanding the use of maven for creating a selenium Project.
- Maven provides a uniform build system.
- A Project Object Model or POM is an XML file
in maven that contains project and configuration information used by Maven to build the project.
- We can add and configure dependencies for selenium, TestNG and
other resources in the maven Project using POM.xml file
- Maven helps to define Project structure for better management of
resources.
- Maven automatically downloads the necessary files added in dependencies
for WebDriver and other resources while building the project.
Installing maven plug-in for eclipse
Below are the steps to install maven
plug-in for eclipse
- Open eclipse and click on Help>Eclipse Marketplace
- Search for Maven integration for Eclipse in eclipse marketplace.
Install Maven integration for Eclipse
- Restart eclipse.
- Maven plug-in has been added in
eclipse.
Creating a maven Project in eclipse:
Pre-Condition: Maven Plug-in is added in eclipse.Below are the steps to create a maven project in eclipse.
- Navigate to File>New>Project.
- It will ask to select a wizard. Select Maven>Maven Project and click on Next
- To start with, select create a simple project in the window and click on Next.
- Provide the details for the artifact including Group Id, Artifact Id, Version, packaging to start with.
- Click on Finish.
Once we click on finish,maven project is created in Java. As mentioned earlier, All the configurations of the Project are saved in a POM.xml file as shown below:
POM stands for "Project Object Model". It is XML representation of the Maven project. POM.xml file inherits from base superPOM.xml
How to use selenium libraries in the maven Project.
We can use selenium libraries by adding dependencies for selenium in the Project Object model as shown in the code snippet below:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>qaautomation</groupId> <artifactId>Selenium_eclipse_maven</artifactId> <version>0.0.1-SNAPSHOT</version> <name>My first maven</name> <description>testing</description>
<dependencies> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.48.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> </dependency> </dependencies> </project>
References:
- https://maven.apache.org/pom.html - For detailed understanding of Project Object Model.
- http://www.guru99.com/maven-jenkins-with-selenium-complete-tutorial.html - How to set up selenium with maven, Jenkins and TestNG.
Saturday, February 6, 2016
Assertion and Soft Assertions in Selenium Webdriver using TestNG
We create automated regression test to validate the application is working correctly. We need to add checkpoints/validation at different steps in the workflow to validate the application is correctly behaving or not.
For e.g.: Let us consider login into an e-mail website. We need to go to application URL and assert/validate username and password input box and Login button are displayed correctly. Then next step can be to assert login is successful for a positive test with valid username and password or assert proper error message is displayed for a negative test with invalid username and password.
Testing framework for automation like TestNG and jUnit for Java or nUnit for C# provides feature of assertion to assert/validate the application is working properly and scores 10/10 in the test results.
In this article, we will discuss how to add assertions using TestNG framework for selenium tests.
For example in a selenium test for login functionality, When we provide valid username and password and login into application, we expect the title to be displayed correctly in the page. So in this scenario, we should add an assertion for comparing the expected title of the page with the actual title displayed in the page. In case, the two values does not match, the assertion fails and test execution fails
For e.g.: Let us consider login into an e-mail website. We need to go to application URL and assert/validate username and password input box and Login button are displayed correctly. Then next step can be to assert login is successful for a positive test with valid username and password or assert proper error message is displayed for a negative test with invalid username and password.
Testing framework for automation like TestNG and jUnit for Java or nUnit for C# provides feature of assertion to assert/validate the application is working properly and scores 10/10 in the test results.
In this article, we will discuss how to add assertions using TestNG framework for selenium tests.
Problem statements of this article:
- What is meant by Assertions in TestNG?
- What are different types of assertion in TestNG?
- What is the difference between assert and softassertions?
- Code explaining how to implement assert and softassert in TestNG?
What is meant by Assertions?
With TestNG framework, We can add assertions within tests to validate whether the expected condition is true or false. In most of the assertions, the expected condition is compared with the actual results and test fails in case an assertion fails. The failure is reported in test results.For example in a selenium test for login functionality, When we provide valid username and password and login into application, we expect the title to be displayed correctly in the page. So in this scenario, we should add an assertion for comparing the expected title of the page with the actual title displayed in the page. In case, the two values does not match, the assertion fails and test execution fails
What are different types of assertions?
Some of the assertions that can be implemented in TestNG are as follows:
Types of assertion
|
Description
|
Assert.AssertEquals(Expected condition, Actual condition)
|
This compares the expected condition with
actual condition and fails the test in case the assertion fails.Different
object types can be compared using Assert.AssertEquals
|
Assert.AssertEquals(Expected condition, Actual condition,
Message)
|
This compares the expected condition with
actual condition and fails the test in case the assertion fails displaying
the message as defined while calling the assertion.
|
Assert.assertFalse(Boolean condition)
|
Asserts that a condition is false
|
Assert.assertFalse(Boolean condition, String Message )
|
Asserts that a condition is false. If it
isn't, an Assertion Error, with the given message, is thrown.
|
Assert.assertTrue(Boolean condition, String Message )
|
Asserts that a condition is true. Assertion
fails if condition is not true and string message is displayed.
|
Assert.AssertNull(object)
|
Validates if a assertion is null.
|
Assert.Fail(String strMessage)
|
Fails an assertion without validating any
conditions. This is very useful for outcome of conditional statements. e.g: if title is incorrect, fail the test.
|
Sample Code to explain how to create assertion in TestNG
package testNG; import java.io.File; import org.openqa.selenium.WebDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.testng.Assert; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class assertionVal { WebDriver driver; @BeforeTest public void setup() { File file = new File("D:\\selenium\\IEDriverServer.exe"); System.setProperty("webdriver.ie.driver", file.getAbsolutePath()); driver = new InternetExplorerDriver(); } @Test public void assertVal() { driver.navigate().to("http://qaautomationqtp.blogspot.com"); Assert.assertEquals("Learning Automation Concepts in QTP", driver.getTitle()); //Assert to compare two values and reporting a message in case validation fails Assert.assertEquals("aaa", "aaa", "this is the first test and value does not match"); //Assert to validate a boolean condition as false Assert.assertFalse(driver.getTitle().contentEquals("Learning Automation Concepts in QTP")); //Assert to validate a boolean condition as true Assert.assertFalse(driver.getTitle().contentEquals("Learning Automation Concepts in QTP")); //Assertion to validate an object is not null. Assert.assertNotNull("driver"); } }
What is the difference between assert and soft assertions (Verify statements)?
The issue with assertion is, test execution stops in case an assertion fails. So if we do not want to stop a test on failure and continue with test execution, using assert statement will not work,
In such sccnarios, we will use soft assertions, using import org.testng.asserts.SoftAssert; class.
In this case, verification step will fail but test execution will continue.
Sample Code to explain how to implement soft assertion in TestNG
package testNG; import org.testng.Assert; import org.testng.annotations.Test; //soft assertion will use the below softAssert class import org.testng.asserts.SoftAssert; public class assertionVal { // Create an soft assertion object softas SoftAssert softas = new SoftAssert(); @Test public void assertVal() { //Create an assertion similar to hard assertion as shown below softas.assertEquals("aaaa", "bb"); softas.assertEquals("aa","aaccc","asserts exists"); // this is an example of hard assertion, test will stop execution //at this step in case error is encountered. Assert.assertEquals("aa", "aa"); System.out.println("nitin"); //This step is very important as without this step, //no soft assertion failure will be reported in test result. softas.assertAll(); } }
Sunday, January 31, 2016
GetAttributes, Title, Text and more.... in Selenium Webdriver
In this article, we will discuss how to extract data from elements or Page using Selenium Webdriver. Extracting attribute information and text of elements helps to validate elements have correct and expected attribute value or text.
Problem Statement of this article:
- How to get title of the page?
- How to get text of an element?
- How to get attribute value of element?
How to get title of the Page?
We can get title of the page as well as url of the current Page as shown below:
WebDriver driver = new FirefoxDriver(); driver.navigate().to("https://www.google.com"); // We can get title of the page using driver.getTitle System.out.println(driver.getTitle()); // We can get url of the page using driver.getCurrentUrl System.out.println(driver.getCurrentUrl());
How to get text of an element in the Page?
We can get text of an element in the page using gettext() as shown in the code below:
One of the useful and important use of getText can be to get error messages displayed in page, where the class name of all the error message displayed in the page is same. It can be implemented as follows:
- Identify the classname of the error message.
- Using findelements, find collection of elements with class name.
- Loop through the element collection and getText of each element.
WebDriver driver = new FirefoxDriver();
driver.navigate().to("https://www.google.com");
WebElement elem = driver.findElement(By.id("gb_P gb_R"));
String message = elem.getText();
How to use getAttribute to validate existence of an object and validating attribute properties?
Below code explains how to use getattribute to validate existence of element and extracting attribute value for the object.
import java.io.File; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.ie.InternetExplorerDriver; public class FindAttributes { static WebDriver driver; @Test public void testing() { driver = new FirefoxDriver(); driver.navigate().to("https://www.google.com"); //calling method to get names of all the links in the Page textForObjectType("link"); // function to validate a particular object with particular text exists in the Page ValidateObjectText("link", "About"); // } public static void textForObjectType(String strObj) { if(strObj.toLowerCase().trim().contentEquals("link")) { strObj = "a"; } if(strObj.toLowerCase().trim().contentEquals("button")) { strObj = "button"; } // Similarly can add object of other types. can use enum and switch for better control. List<WebElement> elemLink = driver.findElements(By.tagName(strObj)); int intLinksinPage = elemLink.size(); System.out.println(intLinksinPage); // Loop to get attribute value of all the objects of the type in the page for (int i = 0;i<intLinksinPage;i++) { System.out.println("The name of the link " + (i+1) +" in the page is :- " + elemLink.get(i).getAttribute("text")); } } public static void ValidateObjectText(String strObj, String ObjName) { if(strObj.toLowerCase().trim().contentEquals("link")) { strObj = "a"; } if(strObj.toLowerCase().trim().contentEquals("button")) { strObj = "button"; } List<WebElement> elemLink = driver.findElements(By.tagName(strObj)); int intLinksinPage = elemLink.size(); System.out.println(intLinksinPage); for (int i = 0;i<intLinksinPage;i++) { if(elemLink.get(i).getAttribute("text").contentEquals(ObjName)) { System.out.println("Link exists in Page with text " + elemLink.get(i).getAttribute("text")); } } } }
Subscribe to:
Posts (Atom)