Blog to understand automation concepts in QTP, Selenium Webdriver and Manual Testing concepts

Setting Up TestNG with eclipse


The below image explains how to setup TestNG with eclipse.


A. Navigate to Help>Install new Software.

B. Search for TestNG or http://beust.com/eclipse in Step B.)

C. In Step C.), Select checkbox for TESTNG and click on next.

D. In step D.) accept  the license agreement.

E. Software download will start and will be installed.

F. Once download is completed, it will ask to restart the eclipse. Click on Yes. This will restart eclipse.



Installing TestNG

In the next article, we will discuss how to create a TestNG test for selenium in eclipse.

Code to Capture screenshot in Selenium WebDriver Automation

When we run a script in any automation framework, Capturing and reporting images especially in case of failure is required. In this article, we will discuss different ways to capture screenshot and how to report with screenshot.


Steps to reporting with screenshot:


  • Create an independent function to capture screenshot.
  • Call the screenshot function from the reporting function based on whether to capture screenshot or not.

Different ways to capture screenshot are:


  • Using Java.awt class - Recommend to use if automation interacts with other application together with web application.

  • Using Selenium webdriver (selenium.TakesScreenshot) - Use this to capture screenshot if only web application is to be tested which are identified using selenium webdriver.

Below code shows how to capture screenshot using the above classes:

1:  package testproject;  
2:  import java.awt.Rectangle;  
3:  import java.awt.Robot;  
4:  import java.awt.Toolkit;  
5:  import java.awt.image.BufferedImage;  
6:  import java.io.File;  
7:  import java.util.List;  
8:  import javax.imageio.ImageIO;  
9:  import org.apache.commons.io.FileUtils;  
10:  import org.openqa.selenium.OutputType;  
11:  import org.openqa.selenium.TakesScreenshot;  
12:  import org.openqa.selenium.WebDriver;  
13:  import org.openqa.selenium.ie.InternetExplorerDriver;  
14:  public class testingC {  
15:       static WebDriver driver;  
16:       public static void main(String[] args) throws InterruptedException {  
17:            // Connect to the Internet driver server and create an instance of Internet explorer driver.       
18:            File file = new File("D:\\selenium\\IEDriverServer.exe");  
19:            System.setProperty("webdriver.ie.driver", file.getAbsolutePath());       
20:            try  
21:       {  
22:                 driver = new InternetExplorerDriver();  
23:            }  
24:            catch(Exception e)  
25:            {  
26:                 driver=new InternetExplorerDriver();  
27:            }  
28:            driver.navigate().to("https://qaautomationqtp.blogspot.com");  
29:            try {  
30:                 Capturescreenshot("testingscr.png");  
31:                 CapturescreenshotJava("D://testingscr1.png");  
32:            } catch (Exception e)   
33:            {  
34:                 e.printStackTrace();  
35:            }  
36:       }  
37:          public static void Capturescreenshot(String StrscreenshotName) throws Exception   
38:          {  
39:              File generateFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);  
40:              String strOutFile = "D:\\"+StrscreenshotName;  
41:              FileUtils.copyFile(generateFile, new File(strOutFile));  
42:          }  
43:          public static void CapturescreenshotJava(String StrscreenshotName) throws Exception   
44:          {  
45:                    Robot robot = new Robot();  
46:                    Rectangle screenRect = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());  
47:                    BufferedImage scrImg = robot.createScreenCapture(screenRect);  
48:                    ImageIO.write(scrImg, "png", new File(StrscreenshotName));  
49:              }   
50:  }  

Using ExpectedConditions for explicit wait in Selenium Webdriver.

In this article, we will discuss on different explicit wait asking the test script to wait for some time based on the expectedcondition for object defined by locator.Before discussing further, let us have a look at generic syntax for adding an explicit wait in the test using expected condition.


WebDriverWait wait = new WebDriverWait(driver, 1000);

wait.until(ExpectedConditions.presenceOfElementLocated(By.linkText("QAmail"))); 


In the first statement, we create an instance wait of the WebdriverWait object with arguments as driver object and the time to wait for existence of element.


In the next statement, we are asking the script to wait until the expected condition is met. In the above script, test script will wait for max 1000 second for element identified with linkText as "QAmail" to be available in the DOM for the page.


Let us define what are the different ways to use expected condition based on which we can add explicit wait in the object.

a. presenceOfElementLocated - Verify presence of element in the DOM.

WebDriverWait wait = new WebDriverWait(driver, 1000);

wait.until(ExpectedConditions.presenceOfElementLocated(By.linkText("QAmail"))); 


b. Using elementToBeClickable

wait.until(ExpectedConditions.elementToBeClickable(By.linkText("TGmail")));


c. Using invisibilityOfElementLocated

wait.until(ExpectedConditions.invisibilityOfElementLocated(By.linkText("tGmail")));

 

d. invisibilityOfElementWithText - Validating the invisibility of element with text for the element provided.

wait.until(ExpectedConditions.invisibilityOfElementWithText(By.xpath("//div[@id='_eE']"), "tGmail")); 


e. textToBePresentInElement - Validating the text to be present in the element defined by locator.

wait.until(ExpectedConditions.textToBePresentInElement(By.xpath("//div[@id='_eE']"),"Gmail")); 


f. visibilityOfElementLocated by locator.

wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@id='_eE']"))); 


g. titleContains - Wait until the title is displayed correctly

wait.until(ExpectedConditions.titleContains("QA Automation QTP"));


h. alertIsPresent - waits for alert to appear in the window.

wait.until(ExpectedConditions.alertIsPresent());