Saturday, September 8, 2012

How to handle popup window and run test suite in Selenium webdriver.

Hi There are three .java files and one build.xml file.

package com.org;

import java.util.Iterator;
import java.util.List;
import java.util.concurrent.TimeUnit;

import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

import junit.framework.TestCase;

public class TypeGoogle extends TestCase{
    
    private WebDriver driver;
    private String baseUrl;
    private StringBuffer verificationErrors = new StringBuffer();
    
    @Before
    public void setUp() throws Exception {
        driver = new FirefoxDriver();
        baseUrl = "http://www.google.co.in";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }

    @Test
    public void testFileTypeGoogle() throws Exception {
        
        driver.get(baseUrl + "/");
        driver.findElement(By.xpath("//div[@id='gs_lc0']/input")).clear();
        driver.findElement(By.xpath("//div[@id='gs_lc0']/input")).sendKeys("google");
         
            WebElement google = driver.findElement(By.className("gssb_m"));
            List<WebElement> googleBox = google.findElements(By.tagName("span"));
            Iterator<WebElement> i = googleBox.iterator();
            while(i.hasNext()) {
                    WebElement sel = i.next();
                    System.out.println(sel.getText());
            }
      }

    @After
    public void tearDown() throws Exception {
        driver.quit();
        String verificationErrorString = verificationErrors.toString();
        if (!"".equals(verificationErrorString)) {
            fail(verificationErrorString);
        }
      }
    }

=====================================================================


package com.org;

import java.util.concurrent.TimeUnit;

import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import junit.framework.TestCase;

public class AddGadget extends TestCase{
    
    private WebDriver driver;
    private String baseUrl;
    private StringBuffer verificationErrors = new StringBuffer();
    @Before
    public void setUp() throws Exception {
        driver = new FirefoxDriver();
        baseUrl = "http://www.google.com/";
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    }

        @Test
        public void testFileAddGadget() throws Exception {
            driver.get(baseUrl + "ig");
            
            driver.findElement(By.xpath("//div[@class='popupContent']/div/a[@id='popup_dialog_close']")).click();
            driver.findElement(By.cssSelector("img.G-BJ.G-AJ")).click();
            driver.findElement(By.id("search_module_query_box")).clear();
            driver.findElement(By.id("search_module_query_box")).sendKeys("news");
            driver.findElement(By.id("search_module_submit_button")).click();
            driver.findElement(By.id("featured_gadget_link")).click();
            driver.findElement(By.cssSelector("#addbtn > input.kd-button")).click();
            driver.findElement(By.id("back_to_gallery_link")).click();
            driver.findElement(By.cssSelector("input.kd-button")).click();
            driver.findElement(By.cssSelector("span.G-PI")).click();
            driver.findElement(By.id("tdd_edit")).click();
            driver.findElement(By.linkText("Delete")).click();
            driver.switchTo().alert().accept();
            Thread.sleep(5000);
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        }

        @After
        public void tearDown() throws Exception {
            driver.quit();
            String verificationErrorString = verificationErrors.toString();
            if (!"".equals(verificationErrorString)) {
                fail(verificationErrorString);
            }
        }
    }

=====================================================================

package com.org;

    import junit.framework.Test;
    import junit.framework.TestSuite;
    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;
    import org.junit.runners.Suite.SuiteClasses;

    @RunWith(Suite.class)
    @SuiteClasses(value = {AddGadget.class, TypeGoogle.class})

    public class IGTestSuite {

        public static Test suite() {
            
            TestSuite suite = new TestSuite();
            suite.addTestSuite(AddGadget.class);
            suite.addTestSuite(TypeGoogle.class);
           
            return suite;
        }

        public static void main(String[] args) {
            junit.textui.TestRunner.run(suite());
        }
    }

=====================================================================

<?xml version="1.0" encoding="UTF-8"?>

<project name="IGoogle" default="all" basedir=".">
    <description>
        Demo UI testing, using Selenium and JUnit
    </description>
  <!-- set global properties for this build -->
  <property name="project_name" value="Results"/>
  <property name="src" location="src"/>
  <property name="build" location="bin"/>
  <property name="dist"  location="dist"/>
  <property name="lib"  location="lib"/>
  <property name="res"  location="res"/>
  <property name="output" location="out"/>
  
    <!-- Set the Classpath -->
    <path id="classpath">
        <fileset dir="./lib/">
            <include name="*.jar"/>
        </fileset> 
        <pathelement path="${build}"/>
    </path>
    
    <!-- top level targets -->
      <target name="compile" depends="init" description="compile the source code " >
        <javac srcdir="${src}" destdir="${build}" includeantruntime="false">  
        <classpath refid="classpath"></classpath>
        </javac>
      </target>

      <target name="clean"
            description="clean up" >
        <!-- Delete the ${build} and ${dist} directory trees -->
        <delete dir="${build}"/>
        <delete dir="${output}"/>
      </target>

        <!-- Selenium Test Case Start -->
        <target name="Start_Selenium_Server">
            <echo message="Start Selenium Server. Please wait.."/>
            <java jar="./lib/selenium-server.jar"
                    fork="true" spawn="true" >
                <classpath refid="classpath"></classpath>
                <!--  Set the proxy
                <arg value="-Dhttp.proxyHost=172.16.18.3"/>
                <arg value="-Dhttp.proxyPort=8080"/
                <arg line="-singleWindow"  />-->
                <arg line="-log ${output}/selenium.log"/>
            </java>
            <echo message="Started Selenium Server. "/>
        </target>    
    
        <target name="Stop-Selenium-Server">
                <echo message="Stop Selenium Server. Please wait.."/>
                <get taskname="selenium-shutdown"
                     src="http://localhost:4444/selenium-server/driver/?cmd=shutDownSeleniumServer
                     dest="${output}/server.stop.status.txt" 
                     ignoreerrors="true"/>
        </target>
    
        <target name="run-alltests" depends="compile" description="run all test suite" >
              <echo message="Test Run. Please wait.."/>
              <antcall target="Start_Selenium_Server"/>
            <junit printsummary="yes" haltonfailure="no" showoutput="yes" >
                <classpath refid="classpath"/>
               <batchtest fork="yes" todir="${output}/raw/">
                  <formatter type="xml"/>
                <fileset dir="${build}">
                 <filename name="com/org/IGTestSuite.class"/>
                </fileset>
              </batchtest>
            </junit>    
              <antcall target="Stop-Selenium-Server"/>
        </target>
    
    
      <target name ="test" depends="run-alltests">
            <java classname="com/org/IGTestSuite.class"
                  fork="true">
                    <arg line="${output}/raw/ ${output}/SeleniumReport.xml"/>
                <classpath refid="classpath"/>
            </java>
              <junitreport todir="${output}">
              <fileset dir="${output}/raw/">
                <include name="TEST-*.xml"/>
              </fileset>
              <report format="frames" todir="${output}/html/"/>
            </junitreport>
      </target>

    <!-- supporting targets -->
    
     <target name="init" description="initialize the build environment" >
        <!-- Create the time stamp -->
        <tstamp/>
        <!-- Create directory structures -->
        <mkdir dir="${build}"/>
        <mkdir dir="${output}"/>
        <mkdir dir="${output}/raw/"/>
        <mkdir dir="${output}/html/"/>
      </target>
  
      <target name="all" depends="clean, test">
      </target>
  
</project>

=====================================================================

1 comment:

  1. Hi,
    Thank you so much for posting this. I really appreciate your work. Keep it up. Great work!

    http://kosmiktechnologies.com/selenium/

    ReplyDelete