WebDriver extends Search context

Remote WebDriver implements WebDriver, TakesScreenShot, JavaScriptExecutor

Chrome, IE, Firefox drivers extend RemoteWebDriver 


Reading property file


FileReader reader=new FileReader("db.properties");  

      

    Properties p=new Properties();  

    p.load(reader);  

      

    System.out.println(p.getProperty("user"));  

    System.out.println(p.getProperty("password"));  


Data Provider


public class DP

{

    @DataProvider (name = "login-data")

     public Object[][] LoginData(){

 Object [][] twitterdata=new Object[2][2];

 twitterdata[0][0]="username1@gmail.com";

         twitterdata[0][1]="Password1";

 twitterdata[1][0]="username2@gmail.com";

 twitterdata[1][1]="Password2";

         return twitterdata;

      }

    @Test (dataProvider = "login-data")

    public void login (String uname,String password) {

        System.setProperty("webdriver.chrome.driver", "");

        WebDriver driver = new ChromeDriver();

        driver.get("");

        driver.fE(by.name("username")).sendKeys(uname);

        driver.fE(by.name("password")).sendKeys(pwd);

    }

}


Test NG -Parallel Testing


<suite name = "Parallel Testing Suite">

   <test name = "Parallel Tests" parallel = "methods" thread-count=5>

    <parameter name="browser" value="chrome" />

    <parameter name="version" value="79.0" />

    <parameter name="platform" value="WIN10" />

      <classes>

         <class name = "ParallelTest" />

      </classes>

   </test>

</suite>


Reading from excel


FileInputStream fis=new FileInputStream(new File("C:\\demo\\student.xls"));  

XSSFWorkbook wb=new HSSFWorkbook(fis);  

XSSFSheet sheet=wb.getSheetAt(0);  


jxl - get rows(), XSSF - getlatrownum()


Reading data from table


Connection con = DriverManager.getConnection("jdbc.mysql.880", uname, pwd)

Statement st = con.createStatment();

ResultSet rs = st.executeQuery("select * from orders");

s.o.p(rs.getString(0)+ "\t" + rs.getString(1))


Grid

d:\Docs\Selenium>java -jar selenium-server-standalone-2.52.0.jar -role hub

http://localhost:4444/grid/console  - to check whether grid is started

IP Address - 192.168.1.4

for registering a node, open another command prompt and run the command

d:\Docs\Selenium>java -jar selenium-server-standalone-2.52.0.jar -role webdriver -hub http://192.168.1.4:4444/grid/register -port 6577

d:\Docs\Selenium>java -jar selenium-server-standalone-2.52.0.jar -role webdriver -hub http://192.168.1.4:4444/grid/register -port 5466


Data Driven Test

1.Prepare test data in excel

2.Add Apache poi dependency in pom.xml file

3.XL Utility file(java class file) which will read data from excel

4.Write TestNG test with DataProvider method


fi = new FileInputStream(path);

wb = new workbook(fi);

rowCount = wb.getSheet(1).getLastRowNum();

columCount= wb.getSheet(1).getRow(0).getLastCellNum();


@DataProvider(name="xyz")

string[][] readTestData()

{

  **string path = System.getProperty("user.dir")+"";  

  string empData[][]= new String[rowCount][columnCount]

  for(int i=0;i<=rowCount-1;i++

   {

     for(int j=1;j<colCount;j++

      {

        empData[i][j] = XLUtils.getCellData(i,j);

      }

{

@Test(dataProvider="xyz")

public insertData(String empID, String ename, String sal)

{


}


Page Object Model

LoginPage.java

package com.sample.pom.pages;


import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;


public class LoginPage {

WebDriver driver;

//Constructor

public LoginPage(WebDriver driver)

{

this.driver = driver;

}

//Locators

By loc_txt_name = By.id("username");

By loc_txt_pwd = By.id("password");

By loc_btn_submit = By.xpath("//button[@type='submit']");

//Action methods

public void setUserName(String user)

{

driver.findElement(loc_txt_name).sendKeys(user);

}

public void setPassword(String pwd)

{

driver.findElement(loc_txt_pwd).sendKeys(pwd);

}

public void clickLogin()

{

driver.findElement(loc_btn_submit).click();;

}

}


Login Test.java

package com.sample.pom.tests;


import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.annotations.Test;


import com.sample.pom.pages.LoginPage;


import org.testng.Assert;

import org.testng.annotations.AfterClass;

import org.testng.annotations.BeforeClass;

import java.time.Duration;


public class LoginTest  {

WebDriver driver;

@BeforeClass

void Setup()

{

driver = new ChromeDriver();

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));

driver.get("https://the-internet.herokuapp.com/login");

}

@Test

void testLogin()

{

LoginPage lp = new LoginPage(driver);

lp.setUserName("tomsmith");

lp.setPassword("SuperSecretPassword!");

lp.clickLogin();

String title = driver.getTitle();

Assert.assertEquals(title, "The Internet");

}

@AfterClass

void Teardown()

{

driver.quit();

}    

}


Page Factory

LoginPage.java

package com.sample.pagefactory.pages;


import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.support.FindBy;

import org.openqa.selenium.support.PageFactory;


public class LoginPage {

WebDriver driver;

//Constructor

public LoginPage(WebDriver driver)

{

this.driver = driver;

PageFactory.initElements(driver, this);

}

//Locators

By loc_txt_name = By.id("username");

By loc_txt_pwd = By.id("password");

By loc_btn_submit = By.xpath("//button[@type='submit']");

@FindBy(id="username")

WebElement txt_username;

@FindBy(id="password")

WebElement txt_password;

@FindBy(xpath="//button[@type='submit']")

WebElement btn_login;

//Action methods

public void setUserName(String user)

{

txt_username.sendKeys(user);

}

public void setPassword(String pwd)

{

txt_password.sendKeys(pwd);

}

public void clickLogin()

{

btn_login.click();;

}

}


LoginTest.Java

package com.sample.pagefactory.tests;


import com.sample.pagefactory.pages.LoginPage;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.annotations.Test;

import org.testng.Assert;

import org.testng.annotations.AfterClass;

import org.testng.annotations.BeforeClass;

import java.time.Duration;


public class LoginTest  {

WebDriver driver;

@BeforeClass

void Setup()

{

driver = new ChromeDriver();

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5));

driver.get("https://the-internet.herokuapp.com/login");

}

@Test

void testLogin()

{

LoginPage lp = new LoginPage(driver);

lp.setUserName("tomsmith");

lp.setPassword("SuperSecretPassword!");

lp.clickLogin();

String title = driver.getTitle();

Assert.assertEquals(title, "The Internet");

}

@AfterClass

void Teardown()

{

driver.quit();

}

    

}