Wednesday 22 February 2017

SELENIUM: HOW TO CAPTURE TOOLTIP MESSAGE IN SELENIUM WEBDRIVER:



HOW TO CAPTURE TOOL TIP MESSAGE IN SELENIUM WEB DRIVER:

Tooltip is nothing but an Advice Message to the User (or) Helper Text.
For example In Gmail Signup Page while you are clicking or entering username or Password helper text appears, those text messages are called Tooltip messages.
Steps to read tooltip message:
1. Open browser, enter your application URL (www.gmail.com in this example)
2. Click on the Web element (Password field in this example)and mouse Hover to that tooltip text (Mouse Hover can be performed by using Actions(C) or JavaScript Executor(I)).
3. call get Text() on that mouse hovered Web Element ,store the value in String format and print on the console.
4. Verify with Actual text with Expected result.

Sample Program for reading or capturing the tool tip message :
package com.rameshsoft.demos;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

public class CaptureTooltipDemo {
          WebDriver driver;
          @Test
          public void mm() throws InterruptedException
          {
                   System.setProperty("webdriver.gecko.driver", "C:\\Users\\ramesh\\Desktop\\desktop1\\java\\desk\\geckodriver-v0.11.1-win64\\geckodriver.exe");

                    driver=new FirefoxDriver();

driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
driver.manage().deleteAllCookies();
driver.get("https://accounts.google.com/SignUp?service=mail&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&ltmpl=default");

Thread.sleep(2000);

//click on Password
driver.findElement(By.xpath(".//*[@id='Passwd']")).click();;

WebElement ele=driver.findElement(By.xpath("html/body/div[3]/div[1]/div[2]"));

//perfroming mouseHover
mouseHOver(ele);

String ActualText="at least 8 characters. Don’t use a password from another site, or something too obvious like your pet’s name. Why?";

String expectedText=ele.getText();

System.out.println("text is: "+expectedText);

if(ActualText.equalsIgnoreCase(ele.getText()))
{
System.out.println("Both Actual and Expected values are  Equal");        
}
else
{
System.out.println("Both Actual and Expected values are not Equal");   
}
          }
          public void mouseHOver(WebElement ele)
          {
                  
String mouseOverScript = "if(document.createEvent){var evObj = document.createEvent('MouseEvents');evObj.initEvent('mouseover',true, false); arguments[0].dispatchEvent(evObj);} else if(document.createEventObject) { arguments[0].fireEvent('onmouseover');}";
         
((JavascriptExecutor) driver).executeScript(mouseOverScript,ele);

                  
          }

}

OUTPUT:
text is: Use at least 8 characters. Don’t use a password from another site, or something too obvious like your pet’s name. Why?
Both Actual and Expected values are  Equal

Friday 17 February 2017

SELENIUM Mousehover by JAVASCRIPT EXECUTOR

SELENIUM Mouse hover by JAVASCRIPT EXECUTOR:
=============================================
package com.rameshsoft;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;

public class MouseOverUsingJS {
 WebDriver driver;
 @Test
 public void test() throws InterruptedException
 {
 System.setProperty("webdriver.gecko.driver", "C:\\Users\\ramesh\\Desktop\\desktop1\\java\\desk\\geckodriver-v0.11.1-win64\\geckodriver.exe");
  driver=new FirefoxDriver();
 driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
 driver.get("https://www.flipkart.com");

 Thread.sleep(3000);
WebElement ele=driver.findElement(By.xpath("//*[text()='Electronics']"));
((JavascriptExecutor)driver).executeScript("arguments[0].style.border='4px groove green'",ele);
mouseHOver(ele);
 
 }  
 public void mouseHOver(WebElement ele)
 {
  String mouseOverScript = "if(document.createEvent){var evObj = document.createEvent('MouseEvents');evObj.initEvent('mouseover',true, false); arguments[0].dispatchEvent(evObj);} else if(document.createEventObject) { arguments[0].fireEvent('onmouseover');}";
         
  ((JavascriptExecutor) driver).executeScript(mouseOverScript),ele);
System.out.println("mouse over axtion performed");
 
 }

}

Thursday 16 February 2017

SELENIUM : Extent Reports 2.X



Extent Reports 2.X:
--------------------------
Steps to Work with Extent Reports 2.X:

1. Download  Extent Reports jar file(s),and add to the Project.
open google------>type 'Download Extent Reports'------------>Click on 'ExtentReports for awesome selenium webdriver reporting-------->click on ExtentReports-java-v2 40.2---------->OK

2. Get the ExtentReports(C) object,and give the path of the location where you want to store reports)
Ex: ExtentReports ext=new ExtentReports("C:\\Users\\ramesh\\Desktop\\DemoReports\\report1.html");

3.Get the ExtentTest(C) object
Ex:
ExtentTest logger=ext.startTest("Gmail Test");

4.Log the reports
Ex: logger.log(LogStatus.INFO, "URL is passed");

5.End the Test and call flush().

Ex: ext.endTest(logger);
       ext.flush();
         
Example:

package com.rameshsoft;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;

public class Demo1 {
         
          public static void main(String[] args) throws InterruptedException {                  
                   ExtentReports ext=new ExtentReports("C:\\Users\\ramesh\\Desktop\\DemoReports\\report1.html");
                   ExtentTest logger=ext.startTest("Gmail Test");                  
                   System.setProperty("webdriver.gecko.driver", "C:\\Users\\ramesh\\Desktop\\desktop1\\java\\desk\\geckodriver-v0.11.1-win64\\geckodriver.exe");
                   WebDriver driver=new FirefoxDriver();
                   driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);                                                        
                   driver.manage().window().maximize();
                   logger.log(LogStatus.INFO, "Browser is maximized");
                   driver.get("https://www.gmail.com");
                   logger.log(LogStatus.INFO, "URL is passed");

                   driver.findElement(By.id("Email")).sendKeys("atsunithase@gmail.com");
                   logger.log(LogStatus.INFO, "Uname is passed");

                   driver.findElement(By.id("next")).click();
                   logger.log(LogStatus.INFO, "Clicked on Next button");

                   Thread.sleep(2000);
                   driver.findElement(By.id("Passwd")).sendKeys("******");
                   logger.log(LogStatus.INFO, "Password is passed");

                   driver.findElement(By.id("signIn")).click();
                  
                   logger.log(LogStatus.INFO, "Clicked on signIn button");

                   //logger.log(LogStatus.INFO, "closed the browser");
                  
          ext.endTest(logger);
          ext.flush();

          driver.get("file:///C:/Users/ramesh/Desktop/DemoReports/report1.html");
                   }

}

NOTE: If we want we can add screenshots as well to our reports
       ext.addScreenCapture("");