"Karmanyevadhikaraste ma phaleshu kadachana, Ma karma phala hetur bhurmatey sangostva akarmani."

DB connection

Install my sql

In selenium, write code as

import java.sql.*
public class Db_connect{

connection conn=null;

String url= jdbc:mysql://localhost:3306/";
String DBName="Test"  (Table name)
String driver="com.mysql.jdbc.Driver";
String username="kkjkj"

String password="fff";

try{
class.forName(driver).newInstance();  //create object of instance of driver
conn=DriverManager.getconnection(url+dbname+username,[password) //get connection
Statement stmt= conn.createstatement();
resultset s= stmt.executequery("select * from users");

rs.next();
syso(rs.getstring(1);

while(rs.next)
syso(rs.getstring(1)

Prepare statement pp=conn.prepare statement
pp.setstring(1,"p");
resultset rs3=pp1.executequery();


}catch(Exception e)
{
finally

conn.close();

Grid-type pf connections

We can start hub in remote machine using vmware start a node there and start a node in local machine connecting to vmware hub and run tests parallel
we can use webconfig configuration file to configure

now the tests has ran parallelely...parallel="tests" threadcount="10"> in xml file..
now want to run them at a time

parallel="classes"  >

Grid-Example















Connecting Grid:

1. Start the Hub:

java -jar selenium-server-standalone-2.14.0.jar -role hub

The hub will automatically start-up using port 4444 by default
to change java -jar selenium-server-standalone-2.39.0.jar -role hub -port 4441

2. Start the nodes


java -jar selenium-server-standalone-2.39.0.jar -role node -hub http://localhost:4444/grid/register


java -jar selenium-server-standalone-2.14.0.jar -role node -hub http://
localhost:4441/grid/register -nodecongig webconfig.txt -port 5556 http://
localhost:4441/grid/console  -browser browserName=firefox,version=3.6,maxinstances=5,platform=WINDOWS -nodecongig webconfig.txt


java -Dwebdriver.chrome.driver="C:\chromedriver.exe" -Dwebdriver.ie.dr
iver="C:\IEDriverServer.exe" -jar selenium-server-standalone-2.39.0.jar -role webdriver -hub http://
localhost:4441/grid/register -port5557 -browser browserName=firefox -browser browserName=chrome -browser browserName=iexplorer nodeTimeout 300



3. Create script to run using  DesiredCapabilities capability = DesiredCapabilities.firefox();
and Pass that into the RemoteWebDriver object:


WebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capability);



4. create a testng.xml file and keep the tests in there, and run test ng Suite

You can view the status of the hub by opening a browser window and navigating to: http://localhost:4444/grid/console






import java.net.MalformedURLException;
import java.net.URL;

//import net.sourceforge.htmlunit.corejs.javascript.ast.ThrowStatement;

//import org.apache.xerces.util.URI.MalformedURIException;
import org.openqa.selenium.By;
import org.openqa.selenium.Platform;
//import org.openqa.selenium.WebDriver;
//import org.openqa.selenium.WebElement;
//import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;



public class Grid_demo3 {

@Parameters("browser")
@Test
public void Google_Serach(String b) throws MalformedURLException {
//pass the browser in the search function and print
System.out.println(b);

//make desired capability to null and give if else conditions for multiple change of browsers
DesiredCapabilities cap = null;

if(b.equals("firefox")){
cap= DesiredCapabilities.firefox();
 cap.setPlatform(Platform.ANY);
 cap.setBrowserName("firefox");
}else if (b.equals("chrome")){
cap= DesiredCapabilities.chrome();
cap.setPlatform(Platform.ANY);
 cap.setBrowserName("chrome");}
else if (b.equals("iexplore")){
cap= DesiredCapabilities.internetExplorer();
cap.setPlatform(Platform.WINDOWS);
 cap.setBrowserName("iexplore");}


//no need to give path of chrome exe as we r giving it in node
//C:\Meeraja-Selenium\libraries>java -Dwebdriver.chrome.driver=C:\chromedriver.exe -jar selenium-serve
// r-standalone-2.39.0.jar -role webdriver -hub http://localhost:4441/grid/register -port5557 -browser
// browserName=firefox -browser browserName=chrome


RemoteWebDriver driver= new RemoteWebDriver(new URL("http://localhost:4441/wd/hub"),cap);
driver.get("http://www.gmail.com");
driver.findElement(By.id("Email")).sendKeys("meera");
driver.findElement(By.id("Passwd")).sendKeys("ana");

 }
}

test.xml

<suite name="Selenium Grid with webdriver" verbose="3" parallel="tests">
  <test name="Grid_demo3" >
  <parameter name="browser" value="iexplore"/>
      <classes>
        <class name="Grid_demo3" />
  </classes>
  </test>
</suite>



xml elements should be properly nested
xml tags are case sensitive
xml tags should have root element
xml element attributes should be in quotes

  <parameter name="browser" value="iexplore"/>
xml tags should have closing tags


setup node-selenium grid

C:\Meeraja-Selenium\libraries>java -Dwebdriver.chrome.driver="C:\chromedriver.exe" -Dwebdriver.ie.dr
iver="C:\IEDriverServer.exe" -jar selenium-server-standalone-2.39.0.jar -role webdriver -hub http://
localhost:4441/grid/register -port5557 -browser browserName=firefox -browser browserName=chrome -bro
wser browserName=iexplorer nodeTimeout 300

MOuse movements

public class Mous_move {


public static void main(String[]args){


WebDriver mydriver = new FirefoxDriver();
EventFiringWebDriver webdriver= new EventFiringWebDriver(mydriver);
MyListener myListner= new MyListener();
mydriver.register(myListener);

mydriver.navigate("http://timesofindia.com");

Download file using selenium

in firefox, give   about:config  will give verious properties of forefox

there r d/f type of files,

rar file

doc file

exe file

create a firefox profile
FirefoxProfile profile= new FirefoxProfile();
profile.setPreference("browser.download.folderList",2);
profile.setPreference("browser.download.dir","D:\\test");
profile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/msword,etc");

Go Back and Forward buttons


public class Front_BackButttons {

public static void main(String[] args) throws InterruptedException {

WebDriver driver =new FirefoxDriver();
driver.navigate().to("http://google.com");
//navigate only have functions to go forwrad or backward
driver.findElement(By.xpath("ddsds"));
Thread.sleep(5000L);

driver.navigate().back();
Thread.sleep(5000L);
driver.navigate().forward();
Thread.sleep(5000L);
driver.quit();

wells batch testing reqs

Test Design and Test Execution for Digital Payments (Direct Pay). 
Batch Testing using Autosys, Working with Flat file formats, Data Validation using SQL/Toad and Unix. 
Must have Financial Institution test experience.
HR Job Description:
-          Creates, prepares and implements systems quality assurance reviews for numerous applications. Responsible for primary development of testing strategies.  
-          Consults with users, providing advice and direction.  
-          Performs more complex analysis of business requirements and system specifications.   
-          May serve as a coordinator for all testing activities on a project.  
-          Creates test plans and scripts for own projects.  
-          May lead and review test plans written by others.  
-          Performs moderately complex to complex test data conditioning, regression testing and testing validation.  
-          Provides specific guidance on defects to developers. 
-          Gives direction to less experienced analysts.   
-          Logs, tracks, and verifies resolution of software and specification defects.   
-          Documents all phases of the Systems QA process.: 
-          5+ years IT quality assurance and systems/application testing experience.

Java Script Alerts

go to rediff..
sign on click

don't enter email and click enter...alert will popup with msg enter email


public class Alerts {

public static void main(String[] args) throws InterruptedException {
WebDriver driver= new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
driver.get("http://www.rediff.com");
driver.findElement(By.linkText("signin ")).click();

driver.findElement(By.xpath("//*[@id='btn_login']")).sendKeys(Keys.ENTER);
Thread.sleep(1000L);
Alert Al= driver.switchTo().alert();
System.out.println(Al.getText());
Al.accept();//means OK
//Al.dismss(); //Cancel
//To switch back to regular page
driver.switchTo().defaultContent();

Handling Calenders

import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.text.ParseException;
public class Calender_Handle {

public static void main(String[] args) throws ParseException {


String d = "24/04/2014";
////first we need to extract month and date
SimpleDateFormat df= new SimpleDateFormat("dd/mm/yyyy");
Date myDate = df.parse(d);
Calendar cal= Calendar.getInstance();
cal.setTime(myDate);

int day= cal.get(Calender.Day

File upload

//for file upload always input type is File and id = multi type file

WebDriver driver= new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
driver.get("http://www.salesforce.com");
driver.findElement(By.xpath("//login']")).click();
driver.findElement(By.xpath("//*[@id='u_0_n']")).sendKeys("user");
driver.findElement(By.xpath("//*[@id='u_0_n']")).sendKeys("pwd");
driver.findElement(By.xpath("//*[@id='u_0_n']")).sendKeys(Keys.ENTER);
driver.findElement(By.xpath("//File_Tab']")).click();

driver.findElement(By.xpath("//input[@id='multiFileInput']")).sendKeys("c:\\ssccc.jpeg");


//select File  option some times is flash ...

managing web table with css

WebDriver driver= new FirefoxDriver();
driver.get("http://www.timeanddate.com/worldclock");


//html/body/div[8]/table/tbody/tr[2]/td[3]/a
//under table with class name <table class="border2 lpad wa wc-tab ccols4">
//String xpath="//table[@class='border2 lpad wa wc-tab ccols4']/tbody//tr[2]/td[3]/a";

// to write it as css selector

String cSelect = "table[class= 'border2 lpad wa wc-tab ccols4'] tbody tr:nth-child(2) td:nth-child(3) a";

System.out.println(driver.findElement(By.cssSelector(cSelect)).getText());

Element present at xpath

public boolean isElementPresent_xpath(String objectXpath){
int count=driver.findElement(By.xpath(objectXpath)).size();
if(count==0)
return false;
else
return true;


String firstname="Meeraj";
String lastname="Anasuri";
Assume names are in  a web table,
//Validations:

String part1="//*@id='hkjhjkh[" ;
String part2="]/td[2]";
int i=2 // as xpath starts at 2 for this
while( isElementPresent_xpath(part1+i+part2))
String fname=driver.findElement(By.xpath(part1+i+part2).getText();
if(fName.equals(firstname)){

//then check for last name

String xpathLastnamecol= part1+i+part2.replace("td[1]","[2]");
String lName=driver.findElement(by. xpathLastnamecol).getText();
if(lName.equals(LastName)){
system.out.println();
recordFound=true;
break;
}}

Assert.assertTrue(recordFound,"Record of full name");

cookies

cookies-to keep session of users browser place some code in u r

driver.get("http://www.neocell.com");

Set<Cookie> cookies= driver.manage().getCookies();
//there r multiple options to get cookies,delete cookies,add cookies etc
//cookie is a inbuilt class

System.out.println("Total Cookies" +cookies.size());

Iterator<Cookie> iter= cookies.iterator();

while(iter.hasNext()){
Cookie c= iter.next();
System.out.println(c.getDomain() + "----" + c.getName() +"---" +c.getValue());                      // the website which cookie belongs to and get the name of the cookie and the value of cookie

}

//driver.manage().deleteAllCookies();
//driver.manage().deleteCookieNamed("name");

webdriver timeouts


webdriver timeouts:

driver.get("http://www.gmail.com");

//timeouts will wait for the elemnt to load
// suppose  we give 5 sec, 5 sec is max time it waits and throws error then, if it ready in 3 sec, it will continue
//pageloading time- for the next page to load
driver.manage().timeouts().implicitlyWait(5,TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);
WebElement table= driver.findElement(By.xpath("//*[@id='Passwd']")).sendKeys(keysToSend);;



Frames:

like  apage inside a page..

tag name iframe
there will be multiple iframes in a page- o ask developer about iframe
go to page source, find the link name and made own xpath

to switch frame

driver.switchTo().frame(1)  //control to 1 st frame

to find no.of frames in a web page, 
driver.findelement by tagname(iframe).size();

WebDriver driver= new FirefoxDriver();

driver.get("http://www.timesofindia.com");
System.out.println(driver.findElements(By.tagName("iframe")).size());//no.of frames in a page
//switch to frame
driver.switchTo().frame("liveScores");//get it from page source
//once move to the required frame, then click on url
//to kniw, if it is frame or not, right clcik on it and will see the option frame
driver.findElement(By.xpath("ccc"));


Frame inside Frame:

driver.get("http://www.borro.com");
driver.findElement(By.xpath("kkjkj")).click();
Thread.sleep(1000L);
//ligbox loaded
List<WebElement> frames= driver.findElements(By.tagName("iframe"));
System.out.println(frames.size());
System.out.println(frames.get(0).getAttribute("id"));//particular element
System.out.println(frames.get(1).getAttribute("id"));//2nd element

driver.switchTo().frame(1);
driver.findElement(By.xpath("kkjkj")).sendKeys("jj");
}

Reading the web table contents-rows and column data

public class Web_Tables {

public static void main(String[] args) {
//no.of rows in table

WebDriver driver= new FirefoxDriver();

driver.get("http://www.w3schools.com/tags/tag_table.asp");
WebElement table= driver.findElement(By.xpath("//*[@id='main']/table[2]")); //partial xpath
List<WebElement> rows= table.findElements(By.tagName("tr"));//retrive all rows with tag tr
System.out.println("no.of rows " + rows.size());

for(int rownum=1;rownum<rows.size();rownum++){  //to ignore heading we can ignore first row, so starts from 1
List<WebElement>cells= rows.get(rownum).findElements(By.tagName("td")) ;//corresponding cell content for each row

System.out.println("Total cols is" +cells.size());

//to get the content in all the cells in column

for(int colnum=0;colnum<cells.size();colnum++){
System.out.println(cells.get(colnum).getText() + "---");
}
System.out.println();// to get a new line
}
}

}

Retrive elements from Web Table

//when there is only one td or row value changing split the xpath into 2 and use for loop and get the values of the web table elements

String xpath_start="mnnn";
String xpath_end="hjjhjh";

for(int i=3;i<+33;i=i+2){
String x= driver.findElement(By.xpath(xpath_start+ i + xpath_end)).getText();
System.out.println(x);



Caleneder::

driver.get("http://www.spicejet.com");
driver.findElement(By.xpath("//*[@id='flightSearchContainer']/div[4]/button")).click();
driver.findElement(By.xpath("//*[@id='ui-datepicker-div']/div[1]/table/tbody/tr[3]/td[4]/a")).click();

//AJAX

//want to read all the values displayed when we type a letter in google search
Take the xpath of the first element displayed, observe the xpaths of all elements displayed
take xpath of textbox and send the keys(word)

then from the xpath of 1 st element, driver.findelement(by(xpatha).getText();

WebDriver driver= new FirefoxDriver();

driver.get("http://www.google.com");
driver.findElement(By.xpath("//*[@id='gs_tti0']")).sendKeys("b");
/* try{
int i=1;
while(true)
{
String val= driver.findElement(By.xpath("//*[@id='gsr']/table/tbody/tr[1]/td[2]/table/tbody/tr["+i+"]/td/div/table/tbody/tr/td[1]/span/b")).getText();// the first element displayed
System.out.println(val);
i++;
}


}catch(Exception e){
}}*/
}

Important urls

Handling Certificate errors

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

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;

// to handle untrusted fire fox certificate errors
//create a firefox profile and accept the error in that profile manualy..
//if not manually, create firefox profile FirefoxProfile fp=new FirefoxProfile(); and fp.setAcceptuntrustedCertificates(true);
// or use the line fp.setAssumetrustedCertificateIssuer(false);
//chrome driver will take care of this certificate errors- when system proprty file executed
//for IE, u have to write line- driver.navigate().to("javascript:document.getElementById('overridelink').click()");

  1. driver.navigate().to("javascript:document.getElementById('overridelink').click()");  
//http://www.mythoughts.co.in/2012/05/handling-security-cerificatesuntrusteds.html#.U3E4ufldVmM

public class Certificate_Error {



public static void main(String[] args) {
FirefoxProfile fp= new FirefoxProfile();
fp.setAcceptUntrustedCertificates(true);
//or use below line
fp.setAssumeUntrustedCertificateIssuer(false);
WebDriver driver = new FirefoxDriver(fp);
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.get("http://soapui-tutorial.com/login/soapui-memberlogin.php");
driver.findElement(By.xpath("xxxx")).sendKeys("aaa");
driver.findElement(By.xpath("xddd")).sendKeys("ccc");
driver.findElement(By.xpath("xxxx")).click();

Set<String> ids= driver.getWindowHandles();
Iterator <String> iter= ids.iterator();
String main=iter.next();
String tab= iter.next();
driver.switchTo().window(tab);
driver.findElement(By.xpath("xcdd")).click();

//Here comes the certificate error