Showing posts with label selenium-TestNG. Show all posts
Showing posts with label selenium-TestNG. Show all posts

Thursday, December 16, 2010

Creating Test Suite in TestNG

Create a Click class with 2 methods testClick1,testClick2 and Suite called ClickSuite.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">


import com.thoughtworks.selenium.*;

import org.openqa.selenium.server.*;
import org.testng.annotations.*;


public class Click {
public Selenium selenium;
public SeleniumServer seleniumserver;

@BeforeClass
public void setUp() throws Exception {
RemoteControlConfiguration rc = new RemoteControlConfiguration();
seleniumserver = new SeleniumServer(rc);
selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "http://www.google.co.in/");
seleniumserver.start();
selenium.start();
}

@Test
public void testClick()throws Exception {
selenium.open("/");
selenium.windowMaximize();
selenium.click("link=regexp:Advanced [s|S]earch");
selenium.waitForPageToLoad("5000");
selenium.click("id=opt-icon");
System.out.println(selenium.getLocation());
selenium.click("link=Scholar");
Thread.sleep(10000);
}


@Test
public void testClick2() throws Exception {
selenium.open("/");
selenium.type("q", "selenium link locator");
selenium.click("btnG");
}

@AfterClass
public void tearDown()throws Exception {
selenium.stop();
seleniumserver.stop();


}
}







Now make ClickTestSuite.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="ClickTestSuite" verbose="3">

<test name="testClick">
<classes>
<class name="Click"></class>
</classes>
</test>

<test name="testClick2">
<classes>
<class name="Click"></class>
</classes>
</test>


</suite>




Hope it helps...

Monday, November 29, 2010

How to pass parameters to JUNIT or TestNG test case.

You can parametrize your test cases using excel sheet. With the help you TestNG we can pass different set of data to our test cases by following steps

1. create a data file excel rename column as username and fill below data like


username
test1
test2
test3
test4


2. create a dsn through control pannel--> administrative tool--> Data source (ODBC) --> select system dsn --> click add
then select "dirver do microsoft excel" select workbook your data file which you created above.

now your data source and provider is ready now connect this in your test cases using java class for

Class.forName("sun.jdbc.odbc.
JdbcOdbcDriver");


3. Write the test cases


import org.openqa.selenium.server.RemoteControlConfiguration;
import com.thoughtworks.selenium.*;
import org.openqa.selenium.server.*;
import org.testng.annotations.*;
public class TestExcel extends SeleneseTestBase {
@BeforeClass
public void setUp()throws Exception{

RemoteControlConfiguration rc = new RemoteControlConfiguration();
rc.trustAllSSLCertificates();
seleniumServer = new SeleniumServer(rc);
selenium = new DefaultSelenium("localhost",4444,"*iexplore","http://www.yahoo.com");
seleniumServer.start();
selenium.start();
}
@Test
public void testread()throws Exception{
// Connection connection = null;


try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection( "jdbc:odbc:nk" );
// Connection con = DriverManager.getConnection( "jdbc:odbc:nk" ); here you write your driver which you created using ODBC connecting excel workbook.

Statement st = con.createStatement();
ResultSet rs = st.executeQuery( "Select * from [Sheet1$]" );

ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();

while (rs.next()) {

for (int i = 1; i <= numberOfColumns; i++) {
if (i > 1) System.out.print(", ");
String columnValue = rs.getString(i);
System.out.print(columnValue);
selenium.open("/");

pause(5000);
selenium.click("link=Sign in");
selenium.waitForPageToLoad("30000");


try {
if (selenium.isElementPresent("//a[@id='overridelink']"))
selenium.click("//a[@id='overridelink']");
}
catch (Exception e) {}
pause(30000);
selenium.type("userid", columnValue);
selenium.type("pass","password");
selenium.click("//button[@class='bfbt' and @type='submit']");
pause(8000);
String wc = selenium.getTable("//div[@id='dynamicmenu-hdrCtr']/table[1].0.1");
System.out.print(wc);

selenium.click("link=Sign out");
selenium.waitForPageToLoad("20000");
selenium.isTextPresent("Welcome!");

}
System.out.println("");

}

st.close();
con.close();

} catch(Exception ex) {
System.err.print("Exception: ");
System.err.println(ex.getMessage());
}
}
}

How to setup Selenium RC with TestNG in eclipse

TestNG Annotation

@BeforeTest: The annotated method will be run before any test method belonging to the classes inside the tag is run.

@AfterTest: The annotated method will be run after all the test methods belonging to the classes inside the tag have run.

@BeforeClass: The annotated method will be run before the first test method in the current class is invoked.

@AfterClass: The annotated method will be run after all the test methods in the current class have been run.

@Parameters: Describes how to pass parameters to a @Test method.


Test case

goolgesearch.java


import org.openqa.selenium.server.RemoteControlConfiguration;
import org.openqa.selenium.server.SeleniumServer;
import org.testng.annotations.*;
import com.thoughtworks.selenium.*;

public class googlesearch extends SeleneseTestCase{

Selenium selenium;
public static final String MAX_WAIT_TIME_IN_MS="60000";
private SeleniumServer seleniumServer;


@BeforeClass
@Parameters({"selenium.host","selenium.port","selenium.browser","selenium.url"})
public void setUp(String host, String port, String browser , String url ) throws Exception {
RemoteControlConfiguration rc = new RemoteControlConfiguration();

rc.setSingleWindow(true);

seleniumServer = new SeleniumServer(rc);
selenium = new DefaultSelenium(host, Integer.parseInt(port), browser, url);
seleniumServer.start();
selenium.start();

}

@Test
@Parameters({"search","expected"})
public void googling(String search, String expected) {
selenium.open("/");
selenium.waitForPageToLoad("6000");
selenium.type("q", search);
selenium.click("btnG");
selenium.waitForPageToLoad(MAX_WAIT_TIME_IN_MS);
assertTrue(selenium.isTextPresent(expected));

}
@AfterTest
public void tearDown() throws InterruptedException{
selenium.stop();
seleniumServer.stop();

}
}

# Install TestNG plug-in in your eclipse.
# Set the java build path and pointing to RC sever.
Go to Java project and right click on it then select properties then select java build path then select library tab and select external jar pointing you selenium RC server.
# Run the test case as TestNG test suite.
Go to googlesearch.java page right click on the page the click on Run as... and select the suite in the dialog box which you created above.