Put log4j.xml or log4j.xml file in the resource folder
Tuesday, July 30, 2019
Thursday, July 11, 2019
Tuesday, July 9, 2019
Sunday, July 7, 2019
Tuesday, July 2, 2019
Sunday, June 30, 2019
Saturday, June 29, 2019
Wednesday, May 29, 2019
Thursday, May 16, 2019
Finding element ByChained using chained class
DOM Looks like this for Google Search button
package secondpackage;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.pagefactory.ByChained;
public class DimensionTest {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\Mitturaj.h\\Desktop\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.navigate().to("https://www.google.com/");
driver.manage().window().maximize();
driver.findElement(By.name("q")).sendKeys("Karnataka");
WebElement element = driver
.findElement(new ByChained(By.xpath("//div[@class='FPdoLc VlcLAe']"), By.name("btnK")));
element.click();
}
}
Other ways is put in the List and click on the second element
List<WebElement> searchElements = driver.findElements(By.name("btnK"));
Highlight element in Selenium java
package secondpackage;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
public class DimensionTest {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\Mitturaj.h\\Desktop\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.navigate().to("https://www.google.com/");
driver.manage().window().maximize();
List<WebElement> searchElements = driver.findElements(By.name("btnK"));
JavascriptExecutor jse = (JavascriptExecutor) driver;
jse.executeScript("arguments[0].style.border='3px solid red'", searchElements.get(1));
}
}
Output:
Set Dimension of window in Selenium Java
package secondpackage;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class DimensionTest {
public static void main(String[] args) {
System.setProperty("webdriver.chrome.driver",
"C:\\Users\\Mitturaj.h\\Desktop\\chromedriver_win32\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.navigate().to("https://www.google.com/");
System.out.println(driver.manage().window().getSize());
Dimension dimension = new Dimension(500, 500);
driver.manage().window().setSize(dimension);
System.out.println(driver.manage().window().getSize());
}
}
Output
(945, 1020)
(500, 500)
Thursday, May 9, 2019
Wednesday, May 8, 2019
Tuesday, May 7, 2019
Data driven testing in selenium by using CSV file and TestNG
CSV file looks like this 😉
Sachin,Tendulkar,India
Ricky,Ponting,Australia
Java class to fetch from row wise 😎
package csv;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class CsvFiles1 {
static String filePath = "C:\\Users\\Mitturaj.h\\Desktop\\customers.csv";
static BufferedReader bufferedReader = null;
static String line = "";
static String[][] players;
static int rows = 0;
private static String[][] getdata() {
try {
players = new String[2][3];
bufferedReader = new BufferedReader(new FileReader(filePath));
while ((line = bufferedReader.readLine()) != null) {
String[] country = line.split(",");
// this will determine number of columns in the csv file after
// spitting by commas
System.out.println("Number columns " + country.length);
for (int x = 0; x < country.length; x++) {
players[rows][x] = country[x];
}
System.out.println(country[1]);
rows++;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("number of the rows in the columns " + rows);
return players;
}
@DataProvider(name = "data")
public static Object[][] getPlayers() {
return getdata();
}
@Test(dataProvider = "data")
public void testPlayers(String fname, String lname, String country) {
System.out.println(fname + " " + lname + " " + country);
}
}
Let me know what you thing, Happy coding! 🙌🙌
Data driven testing in selenium by using CSV file and TestNG
Here is the CSV File
Java class to retrieve data from the CSV file and create data provider out of it😉
Let me know what you think in the comment 🤞, Happy coding🙌🙌
Sachin Tendulkar India
Ricky Ponting Australia
Java class to retrieve data from the CSV file and create data provider out of it😉
package csv;
import java.io.DataInputStream;
import java.io.FileInputStream;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class CsvFiles {
private static String line;
static int row;
static int cols;
static String[][] customers;
/*
* Retrieve data from the CSV file and return it has String two dimensional
* String array
*/
private static String[][] getdata() throws Exception {
String filePath = "C:\\Users\\Mitturaj.h\\Desktop\\customers.csv";
DataInputStream dataInputStream = new DataInputStream(new FileInputStream(filePath));
/*
* initialized the array and give size of the columns and rows for CSV
* file data
*/
customers = new String[2][3];
/* ReadLine() method is deprecated now, will need to find alternative
for this one ;)*/
while ((line = dataInputStream.readLine()) != null) {
String[] data = line.split(",");
// can find number of columns after splitting by comma
int cols = data.length;
for (int x = 0; x < cols; x++) {
customers[row][x] = data[x];
}
// can find rows numbers by iterating the row variable ;)
row++;
}
return customers;
}
@DataProvider(name = "data")
public static Object[][] getdataprovider() throws Exception {
return getdata();
}
@Test(dataProvider = "data")
public void show(String fname, String lname, String city) {
System.out.println(fname + " " + lname + " " + city);
}
}
Let me know what you think in the comment 🤞, Happy coding🙌🙌
Sunday, May 5, 2019
Simple log4j example by using xml file in Java
copy log4j2.xml in resource folder
create a logger in your class
Here is the class
add these 2 dependencies in POM.xml file
your log file looks like below:)
Let me know what you think in the comment:) Happy coding!
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<!-- Console Appender -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MMM-dd HH:mm:ss a} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<!-- Rolling File Appender -->
<RollingFile name="RollingFile">
<FileName>C:/Users/Mutturaj/workspace/ExtentReports/log/mylog.log</FileName>
<FilePattern>C:/log/size-based-logs/%d{yyyy-MM-dd-hh}-%i.log.zip</FilePattern>
<PatternLayout>
<Pattern>%d{yyyy-MMM-dd HH:mm:ss a} [%t] %-5level %logger{36} - %msg%n</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="10 KB" />
</Policies>
<DefaultRolloverStrategy max="5" />
</RollingFile>
</Appenders>
<Loggers>
<Logger name="extentReportForMultipleTestsInAClass" level="debug" additivity="false">
<AppenderRef ref="RollingFile" />
<AppenderRef ref="Console" />
</Logger>
<Root level="trace">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
create a logger in your class
private static final Logger log=LogManager.getLogger(ClassA.class);
Here is the class
package extentReportForMultipleTestsInAClass;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.testng.Assert;
import org.testng.annotations.Test;
public class ClassA extends BaseTest {
private static final Logger log=LogManager.getLogger(ClassA.class);
@Test
public void method1() {
log.info("Method 1 started");
test = extent.createTest("method1");
driver.get("https://www.facebook.com/");
String title = driver.getTitle();
System.out.println(title);
log.info(title);
Assert.assertEquals(title, "Facebook – log");
}
@Test
public void method2() {
log.info("Method 2 started");
test = extent.createTest("method1");
driver.get("https://www.facebook.com/");
String title = driver.getTitle();
System.out.println(title);
log.info(title);
Assert.assertEquals(title, "Facebook – log");
}
}
add these 2 dependencies in POM.xml file
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.2</version>
</dependency>
your log file looks like below:)
2019-May-05 11:13:03 AM [main] INFO extentReportForMultipleTestsInAClass.ClassA - Method 1 started
2019-May-05 11:13:06 AM [main] INFO extentReportForMultipleTestsInAClass.ClassA - Facebook – log in or sign up
2019-May-05 11:13:12 AM [main] INFO extentReportForMultipleTestsInAClass.ClassA - Method 2 started
2019-May-05 11:13:15 AM [main] INFO extentReportForMultipleTestsInAClass.ClassA - Facebook – log in or sign up
2019-May-05 11:15:43 AM [main] INFO extentReportForMultipleTestsInAClass.ClassA - Method 1 started
2019-May-05 11:15:47 AM [main] INFO extentReportForMultipleTestsInAClass.ClassA - Facebook – log in or sign up
2019-May-05 11:15:53 AM [main] INFO extentReportForMultipleTestsInAClass.ClassA - Method 2 started
2019-May-05 11:15:57 AM [main] INFO extentReportForMultipleTestsInAClass.ClassA - Facebook – log in or sign up
2019-May-05 11:16:03 AM [main] INFO extentReportForMultipleTestsInAClass.ClassB - Method 1 started
Let me know what you think in the comment:) Happy coding!
Attache screenshot to the failed tests in extent report 3
package extentReportForMultipleTestsInAClass;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeTest;
import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.Status;
import com.aventstack.extentreports.markuputils.ExtentColor;
import com.aventstack.extentreports.markuputils.MarkupHelper;
import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
public class BaseTest implements ITestListener {
public WebDriver driver;
public static ExtentHtmlReporter htmlReporter;
public static ExtentReports extent;
public static ExtentTest test;
@BeforeTest
public void setUp() {
getReport();
}
@BeforeMethod
public void launchBrowser() {
getDriver();
}
@AfterMethod
public void closeDriver(ITestResult result) throws IOException {
if (result.getStatus() == ITestResult.FAILURE) {
test.fail("sanpshot below: " + test.addScreenCaptureFromPath(takeScreenShot(driver)));
}
driver.quit();
}
@AfterTest
public void tearDown() {
extent.flush();
}
public void onTestStart(ITestResult result) {
}
public void onTestSuccess(ITestResult result) {
test.log(Status.PASS, MarkupHelper.createLabel(result.getName() + " Test Case PASSED", ExtentColor.GREEN));
}
public void onTestFailure(ITestResult result) {
test.log(Status.FAIL,
MarkupHelper.createLabel(result.getName() + " Test case FAILED due to below issues:", ExtentColor.RED));
test.fail(result.getThrowable());
}
public String takeScreenShot(WebDriver driver) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
String date = dateFormat.format(new Date());
File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
// The below method will save the screen shot in d drive with test
// method name
String destination = "C:/Users/Mutturaj/workspace/ExtentReports/" + date + ".png";
try {
FileUtils.copyFile(scrFile, new File(destination));
} catch (IOException e) {
e.printStackTrace();
}
return destination;
}
public void onTestSkipped(ITestResult result) {
test.log(Status.SKIP, MarkupHelper.createLabel(result.getName() + " Test Case SKIPPED", ExtentColor.ORANGE));
test.skip(result.getThrowable());
}
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
}
public void onStart(ITestContext context) {
}
public void onFinish(ITestContext context) {
}
public static void getReport() {
htmlReporter = new ExtentHtmlReporter(System.getProperty("user.dir") + "/test-output/MyReport.html");
extent = new ExtentReports();
extent.attachReporter(htmlReporter);
extent.setSystemInfo("OS", "Windows 10");
extent.setSystemInfo("Host Name", "Test");
extent.setSystemInfo("Environment", "QA");
extent.setSystemInfo("QA Name", "Mutturaj Hulagabal");
htmlReporter.config().setChartVisibilityOnOpen(true);
htmlReporter.config().setDocumentTitle("Extent report");
htmlReporter.config().setReportName("Final Report");
}
public WebDriver getDriver() {
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().deleteAllCookies();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.manage().window().maximize();
return driver;
}
}
package extentReportForMultipleTestsInAClass;
import org.testng.Assert;
import org.testng.annotations.Test;
public class ClassA extends BaseTest {
@Test
public void method1() {
test = extent.createTest("class A1");
driver.get("https://www.facebook.com/");
String title = driver.getTitle();
System.out.println(title);
Assert.assertEquals(title, "Facebook – log");
}
@Test
public void method2() {
test = extent.createTest("class A1");
driver.get("https://www.facebook.com/");
String title = driver.getTitle();
System.out.println(title);
Assert.assertEquals(title, "Facebook – log");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<listeners>
<listener class-name="extentReportForMultipleTestsInAClass.BaseTest"/>
</listeners>
<test thread-count="5" name="Test1">
<classes>
<class name="extentReportForMultipleTestsInAClass.ClassA" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
Saturday, May 4, 2019
Extent report for multiple classes
pom.xml
Base class
Tow test classes
TestNG.ml file
Let me know what you think in the comment :) Happy coding!
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.extentreport</groupId>
<artifactId>practice</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.aventstack</groupId>
<artifactId>extentreports</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
</dependencies>
</project>
Base class
package extentReportForMultipleTestsInAClass;
import org.openqa.selenium.WebDriver;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.Status;
import com.aventstack.extentreports.markuputils.ExtentColor;
import com.aventstack.extentreports.markuputils.MarkupHelper;
import com.aventstack.extentreports.reporter.ExtentHtmlReporter;
public class BaseTest implements ITestListener {
public WebDriver driver;
public static ExtentHtmlReporter htmlReporter;
public static ExtentReports extent;
public static ExtentTest test;
@BeforeTest
public void setUp() {
getReport();
}
@AfterTest
public void tearDown() {
extent.flush();
}
@AfterMethod
public void closeDriver() {
driver.quit();
}
public void onTestStart(ITestResult result) {
}
public void onTestSuccess(ITestResult result) {
test.log(Status.PASS, MarkupHelper.createLabel(result.getName() + " Test Case PASSED", ExtentColor.GREEN));
}
public void onTestFailure(ITestResult result) {
test.log(Status.FAIL,
MarkupHelper.createLabel(result.getName() + " Test case FAILED due to below issues:", ExtentColor.RED));
test.fail(result.getThrowable());
}
public void onTestSkipped(ITestResult result) {
test.log(Status.SKIP, MarkupHelper.createLabel(result.getName() + " Test Case SKIPPED", ExtentColor.ORANGE));
test.skip(result.getThrowable());
}
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
}
public void onStart(ITestContext context) {
}
public void onFinish(ITestContext context) {
}
public static void getReport() {
htmlReporter = new ExtentHtmlReporter(System.getProperty("user.dir") + "/test-output/MyReport.html");
extent = new ExtentReports();
extent.attachReporter(htmlReporter);
extent.setSystemInfo("OS", "Windows 10");
extent.setSystemInfo("Host Name", "Test");
extent.setSystemInfo("Environment", "QA");
extent.setSystemInfo("QA Name", "Mutturaj Hulagabal");
htmlReporter.config().setChartVisibilityOnOpen(true);
htmlReporter.config().setDocumentTitle("Extent report");
htmlReporter.config().setReportName("Final Report");
}
}
Tow test classes
package extentReportForMultipleTestsInAClass;
import org.testng.Assert;
import org.testng.SkipException;
import org.testng.annotations.Test;
public class ClassA extends BaseTest {
@Test
public void classB1() {
test = extent.createTest("class A1");
driver.get("https://www.facebook.com/");
Assert.assertTrue(true);
}
@Test
public void classB2() {
test = extent.createTest("class A2");
Assert.assertTrue(false);
}
@Test
public void classB3() {
test = extent.createTest("class A3");
throw new SkipException("Skipped");
}
}
package extentReportForMultipleTestsInAClass;
import org.testng.Assert;
import org.testng.annotations.Test;
public class ClassB extends BaseTest {
@Test
public void classB1() {
test=extent.createTest("class B");
driver.get("https://www.facebook.com/");
test.info(driver.getTitle());
Assert.assertTrue(true);
}
@Test
public void classB2() {
test=extent.createTest("class B");
Assert.assertTrue(false);
}
}
TestNG.ml file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<listeners>
<listener class-name="extentReportForMultipleTestsInAClass.BaseTest"/>
</listeners>
<test thread-count="5" name="Test1">
<classes>
<class name="extentReportForMultipleTestsInAClass.ClassA" />
<class name="extentReportForMultipleTestsInAClass.ClassB" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
Let me know what you think in the comment :) Happy coding!
Friday, April 26, 2019
Screen recorder by using Monte recorder
package video;
import static org.monte.media.FormatKeys.EncodingKey;
import static org.monte.media.FormatKeys.FrameRateKey;
import static org.monte.media.FormatKeys.KeyFrameIntervalKey;
import static org.monte.media.FormatKeys.MIME_QUICKTIME;
import static org.monte.media.FormatKeys.MediaTypeKey;
import static org.monte.media.FormatKeys.MimeTypeKey;
import static org.monte.media.VideoFormatKeys.CompressorNameKey;
import static org.monte.media.VideoFormatKeys.DepthKey;
import static org.monte.media.VideoFormatKeys.ENCODING_QUICKTIME_JPEG;
import static org.monte.media.VideoFormatKeys.QualityKey;
import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.io.File;
import org.monte.media.Format;
import org.monte.media.FormatKeys.MediaType;
import org.monte.media.math.Rational;
import org.monte.screenrecorder.ScreenRecorder;
public class VedioOne {
private static ScreenRecorder screenRecorder;
public static final String USER_DIR = "user.dir";
public static final String DOWNLOADED_FILES_FOLDER = "videos";
public static void start() throws Exception{
File file = new File(System.getProperty(USER_DIR) + File.separator + DOWNLOADED_FILES_FOLDER);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int width = screenSize.width;
int height = screenSize.height;
Rectangle captureSize = new Rectangle(0, 0, width, height);
GraphicsConfiguration gc = GraphicsEnvironment
.getLocalGraphicsEnvironment().getDefaultScreenDevice()
.getDefaultConfiguration();
// Create a instance of ScreenRecorder with the required configurations
screenRecorder = new ScreenRecorder(gc,captureSize, new Format(MediaTypeKey,MediaType.FILE, MimeTypeKey, MIME_QUICKTIME),
new Format(MediaTypeKey, MediaType.VIDEO, EncodingKey,ENCODING_QUICKTIME_JPEG, CompressorNameKey,
ENCODING_QUICKTIME_JPEG, DepthKey, (int) 24,FrameRateKey, Rational.valueOf(15), QualityKey, 1.0f,
KeyFrameIntervalKey, (int) (15 * 60)),
new Format(MediaTypeKey,MediaType.VIDEO, EncodingKey, "black", FrameRateKey,Rational.valueOf(30)),
null,file);
// Call the start method of ScreenRecorder to begin recording
screenRecorder.start();
}
public static void stop() throws Exception{
screenRecorder.stop();
}
}
<dependency>
<groupId>com.github.stephenc.monte</groupId>
<artifactId>monte-screen-recorder</artifactId>
<version>0.7.7.0</version>
</dependency>
package seleniumWebdriver;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import org.testng.annotations.Test;
import takescreenshot.BaseClass;
import video.VedioOne;
public class RobotExample extends BaseClass {
@Test
public void open() throws Exception{
//Start recorder
VedioOne.start();
driver.navigate().to("https://www.youtube.com/");
Robot robot=new Robot();
robot.keyPress(KeyEvent.VK_TAB);
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_TAB);
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_TAB);
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_TAB);
Thread.sleep(2000);
robot.keyPress(KeyEvent.VK_ENTER);
Thread.sleep(2000);
driver.close();
//Stop recorder
VedioOne.stop();
}
}
Wednesday, April 24, 2019
Retrieve data from Excel file by using Apache POI
package fileio;
import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class POI123 {
//This method id used to get data from the xls OR xlsx file by using browser factory class
public static String getdata1() throws Exception {
Workbook workbook = WorkbookFactory.create(new File("C:\\Users\\Mitturaj.h\\Desktop\\data.xls"));
Sheet sheet = workbook.getSheetAt(0);
int rows = sheet.getLastRowNum();
System.out.println(rows);
String value = sheet.getRow(0).getCell(0).getStringCellValue();
System.out.println(value);
return value;
}
// this is method is used to get data from the .xls file by using HSSF class
public static String getdata2() throws Exception {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream("C:\\Users\\Mitturaj.h\\Desktop\\data.xls"));
Sheet sheet = workbook.getSheetAt(0);
int rows = sheet.getLastRowNum();
String data = sheet.getRow(0).getCell(0).getStringCellValue();
System.out.println(rows);
System.out.println(data);
return data;
}
public static void getdata3() throws Exception{
HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream("C:\\Users\\Mitturaj.h\\Desktop\\data.xlsx"));
Sheet sheet=workbook.getSheetAt(0);
String value=sheet.getRow(0).getCell(0).getStringCellValue();
System.out.println(value);
}
public static void main(String[] args) throws Exception {
getdata2();
getdata1();
getdata3();
}
}
Tuesday, April 16, 2019
log4j2
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Properties>
<Property name="basePath">C:\\Users\\Mitturaj.h\\Selenium-Learning\\Selenium-Learning\\test-output
</Property>
</Properties>
<Appenders>
<RollingFile name="fileLogger" fileName="${basePath}/app-info.log"
filePattern="${basePath}/app-info-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
<RollingFile name="Logger" fileName="${basePath}/app-log.log"
filePattern="${basePath}/app-info-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout
pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
</Appenders>
<Loggers>
<!-- file-logger is ref to rolling file name: fileLogger -->
<Logger name="apachepoi" level="debug" additivity="true">
<appender-ref ref="fileLogger" level="debug" />
</Logger>
<!-- logger ref is here reference to Rolling File name:Logger -->
<Logger name="log4j2" level="debug" additivity="true">
<appender-ref ref="Logger" level="debug" />
</Logger>
<Root level="debug" additivity="false">
<appender-ref ref="console" />
</Root>
</Loggers>
</Configuration>
package log4j2;
import org.apache.logging.log4j.LogManager;
public class LogIt {
private static final org.apache.logging.log4j.Logger LOGGER=LogManager.getLogger(LogIt.class.getName());
public static void main(String[] args) {
LOGGER.info("Loggin here");
}
}
Get all keys and values from the properties file
package muttutest;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
import java.util.Set;
public class Prop {
public static Properties loadPropertiesFile() throws Exception {
Properties prop = new Properties();
InputStream in = new FileInputStream(
"C:\\Users\\Mutturaj\\workspace\\maven-learn\\src\\test\\java\\muttutest\\muttu.properties");
prop.load(in);
in.close();
return prop;
}
public static void main(String[] args) {
try {
Properties properties = loadPropertiesFile();
Set<Object> set = properties.keySet();
for (Object o : set) {
String key = (String) o;
System.out.println("key: " + key + " value: " + properties.getProperty(key));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Monday, April 15, 2019
Get data from properties file by File Input Stream and File Reader
package muttutest;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.util.Properties;
public class SysProps {
static Properties properties, properties2;
public static void main(String[] args) throws Exception {
File file = new File(
"C:\\Users\\Mutturaj\\workspace\\maven-learn\\src\\test\\java\\muttutest\\muttu.properties");
//File Input Stream
FileInputStream inStream = new FileInputStream(file);
properties.load(inStream);
System.out.println(properties.getProperty("name"));
//File reader
FileReader fileReader = new FileReader(
"C:\\Users\\Mutturaj\\workspace\\maven-learn\\src\\test\\java\\muttutest\\muttu.properties");
properties2=new Properties();
properties2.load(fileReader);
System.out.println(properties2.getProperty("name"));
}
}
Apache POI Workbook Factory in Java
package test;
import java.io.FileInputStream;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class DataExcel {
private static String[][] users;
public static String[][] getData() throws Exception {
Workbook workbook = WorkbookFactory.create(new FileInputStream("C:\\Users\\Mitturaj.h\\Desktop\\data.xlsx"));
Sheet sheet = workbook.getSheet("Sheet1");
int noOfRows = sheet.getLastRowNum() + 1;
System.out.println(noOfRows);
users = new String[noOfRows][2];
for (int i = 0; i < noOfRows; i++) {
for (int j = 0; j < 2; j++) {
String user = sheet.getRow(i).getCell(j).getStringCellValue();
users[i][j] = user;
}
}
return users;
}
@DataProvider(name = "users")
public static Object[][] getUsers() throws Exception {
return getData();
}
@Test(dataProvider = "users")
public void login(String username, String pass) {
System.out.println(username + " " + pass);
}
}
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>ooxml-schemas</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
<scope>test</scope>
</dependency>
Thursday, April 11, 2019
API automation using Rest Assured and TestNG
RestAPITests.java
package resrassure;
import org.json.simple.JSONObject;
import org.testng.Assert;
import org.testng.annotations.Test;
import io.restassured.RestAssured;
import io.restassured.http.Method;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
public class RestAPITests {
@Test
public void checkSometing() {
// https://restapi.demoqa.com/utilities/weather/city/hyderabad
RestAssured.baseURI = "http://restapi.demoqa.com/utilities/weather/city";
RequestSpecification request = RestAssured.given();
Response response = request.request(Method.GET, "/Hyderabad");
int statusCode = response.statusCode();
System.out.println(statusCode);
String statusLine = response.getStatusLine();
System.out.println(statusLine);
String responceBody = response.getBody().asString();
System.out.println(responceBody);
Assert.assertEquals(statusCode, 200);
Assert.assertEquals(statusLine, "HTTP/1.1 200 OK");
}
@Test
public void register() {
// https://restapi.demoqa.com/customer/register
RestAssured.baseURI = "https://restapi.demoqa.com/customer";
RequestSpecification request = RestAssured.given();
// Add the parameters to the Json object
//Its like has map 'Key' 'Value' pair
JSONObject params = new JSONObject();
params.put("FirstName", "muttu");
params.put("LastName", "muttu");
params.put("UserName", "muttu3");
params.put("Password", "muttu123");
params.put("Email", "muttu3@gmail.com");
// Add header stating the request body ia a JSON
request.headers("Content-Type", "application/json");
// Add Json params to the body of the request
request.body(params.toJSONString());
// Post the request and check the response
Response response = request.post("/register");
System.out.println(response.body().asString());
// Get the status code from the response
int statusCode = response.getStatusCode();
System.out.println(statusCode);
Assert.assertEquals(statusCode, 201);
// Get the success code form the response
String successCode = response.jsonPath().get("SuccessCode");
Assert.assertEquals(successCode, "OPERATION_SUCCESS");
// Get the success Message from the response
String successMessage = response.jsonPath().get("Message");
Assert.assertEquals(successMessage, "Operation completed successfully");
}
}
POM.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hulagabal</groupId>
<artifactId>testex</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>3.3.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
</project>
TestNG.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="true">
<test name="Test">
<classes>
<class name="resrassure.RestAPITests"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
Wednesday, April 10, 2019
Creating TestNG in java program
package sample;
import org.testng.annotations.Test;
public class Sample {
@Test
public void sample1() {
System.out.println("************Sample***sample1***************");
System.out.println("***********Sample****sample1***************");
}
@Test
public void sample2() {
System.out.println("***********Sample****sample2***************");
System.out.println("***********Sample****sample2***************");
}
}
package sample;
import org.testng.annotations.Test;
public class Sample2 {
@Test
public void sample1() {
System.out.println("************Sample2***sample1***************");
System.out.println("***********Sample2****sample1***************");
}
@Test
public void sample2() {
System.out.println("************Sample2***sample2***************");
System.out.println("************Sample2***sample2***************");
}
}
package sample;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
public class MyListener implements ITestListener {
public void onFinish(ITestContext arg0) {
System.out.println("finnished");
}
public void onStart(ITestContext arg0) {
System.out.println("Just started");
}
public void onTestFailedButWithinSuccessPercentage(ITestResult arg0) {
}
public void onTestFailure(ITestResult arg0) {
}
public void onTestSkipped(ITestResult arg0) {
}
public void onTestStart(ITestResult arg0) {
System.out.println("Test started");
}
public void onTestSuccess(ITestResult arg0) {
System.out.println("Test suceess");
}
}
package sample;
import java.util.ArrayList;
import java.util.List;
import org.testng.TestNG;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;
public class TestngExample {
public static void main(String[] args) {
XmlSuite suite = new XmlSuite();
suite.setName("MySuite");
suite.setParallel("false");
suite.setVerbose(1);
suite.addListener("sample.MyListener"); // add listener class
XmlTest test1 = new XmlTest(suite);
test1.setName("Test1");
test1.setPreserveOrder("true");
XmlTest test2 = new XmlTest(suite);
test2.setName("Test2");
test2.setPreserveOrder("true");
XmlClass class1 = new XmlClass(Sample.class);
XmlClass class2 = new XmlClass(Sample2.class);
// Arraylist to add classes
List<XmlClass> classes = new ArrayList<XmlClass>();
classes.add(class1);
classes.add(class2);
test1.setClasses(classes);
test2.setClasses(classes);
TestNG testng = new TestNG();
// arraylist to add uites
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
testng.setXmlSuites(suites);
testng.run();
}
}
Tuesday, April 2, 2019
Log4j2 for selenium webdriver
put it in //src/test/resources/log4j2.properties in the Maven project
To access in any class
Create variable in the class level :
use it wherever you want like this:
name=PropertiesConfig
property.filename = logs
appenders = console, file
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=${filename}/Mylogs.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
loggers=file
logger.file.name=your package name here
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = LOGFILE
logger.file.appender
rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
To access in any class
Create variable in the class level :
private Logger logger = LogManager.getLogger(yourclass.class);
use it wherever you want like this:
logger.info("log message");
Sunday, March 31, 2019
Dr Jordan B Peterson
Are you alive? That means you're all in, so you might as well play your most magnificent game. Ask yourself today: how much good can I do, or what's the best thing I can do? This is one of the ways to justify existence.
Orient yourself to the highest possible good that you can conceive and commit to it. You're way more powerful than you think.
Wednesday, March 27, 2019
Log4j2
log4j2.properties
SampleTest.java
Mylogs.log
name=PropertiesConfig
property.filename = logs
appenders = console, file
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=${filename}/myLogs.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
loggers=file
logger.file.name=kavoor
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = LOGFILE
rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
SampleTest.java
package kavoor;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class LoggerSample {
private static Logger logger = LogManager.getLogger(LoggerSample.class);
public static void main(String[] args) {
logger.info("Info");
logger.warn("Warn");
logger.debug("Debug");
logger.error("Error");
logger.fatal("Fatal");
}
}
Mylogs.log
[INFO ] 2019-03-27 15:55:06.748 [main] LoggerSample - Info
[WARN ] 2019-03-27 15:55:06.751 [main] LoggerSample - Warn
[DEBUG] 2019-03-27 15:55:06.751 [main] LoggerSample - Debug
[ERROR] 2019-03-27 15:55:06.751 [main] LoggerSample - Error
[FATAL] 2019-03-27 15:55:06.751 [main] LoggerSample - Fatal
Tuesday, March 26, 2019
8 Ways to Become a Better Coder
It’s time to get
serious about improving your programming skills. Let’s do it!
That’s an easy
career improvement goal to give oneself, but “become a kick-ass
programmer” is not a simple goal. For one thing, saying, “I want to get better”
assumes that you recognize what “better” looks like. Plus, too many people aim
for improvement without any sense of how to get there.
So let me share
eight actionable guidelines
that can act as a flowchart to improving your programming skills. These tidbits
of wisdom are gathered from 35 years in the computer industry, many of which
were spent as a lowly grasshopper at the feet of some of the people who defined
and documented it.
1. Remind yourself how much you have to learn
The first step in learning something is
recognizing that you don’t know it. That sounds obvious, but experienced programmers
remember how long it took to overcome this personal assumption. Too many
computer science students graduate with an arrogant “I
know best” bravado, a
robust certainty that they know everything and the intense need to prove it to
every new work colleague. In other words: Your “I know what I’m doing!”
attitude can get in the way of learning anything new.
2. Stop trying to
prove yourself right
To become great—not
just good—you have to learn from experience. But be careful, experience can
teach us to repeat poor behavior and to create bad habits. We’ve all
encountered programmers with eight years of experience … the same year of
experience, repeated eight times. To avoid that syndrome, look at everything
you do and ask yourself, “How can I make this better?”
Novice software
developers (and too many experienced ones) look at their code to admire its
wonderfulness. They write tests to prove that their code works instead of trying to make it fail. Truly great
programmers actively look for where they’re wrong—because they know that eventually users will find the defects
they missed.
3. “The code works”
isn’t where you stop; it’s where you start
Yes, your first step
is always to write quality software that fulfills the spec. Average programmers
quit at that point and move on to the next thing.
But to stop once
it’s “done” is like taking a snapshot and expecting it to be a work of art.
Great programmers know that the first iteration is just the first iteration. It
works— congratulations!—but you aren’t done. Now, make it
better.
Part of that process
is defining what “better” means. Is it valuable to make it faster? Easier to
document? More reusable? More reliable? The answer varies with each
application, but the process doesn’t.
4. Write it three
times
Good programmers
write software that works. Great ones write software that works exceedingly well.
That rarely happens on the first try. The best software usually is written
three times:
- First, you
write the software to prove to yourself (or a client) that the solution is
possible. Others may not recognize that this is just a proof-of-concept,
but you do.
- The second
time, you make it work.
- The third
time, you make it work right.
This level of work
may not be obvious when you look at the work of the best developers. Everything
they do seems so brilliant, but what you don’t see is that even rock-star
developers probably threw out the first and second versions before showing
their software to anyone else. Throwing away code and starting over can be a powerful way to include “make
it better” into your personal workflow.
If nothing else,
“Write it three times” teaches you how many ways there are to approach a problem.
And it prevents you from getting stuck in a rut.
5. Read code. Read
lots of code
You probably expected me to lead with this advice, and indeed
it’s both the most common and the most valuable suggestion for improving
programming skills. What is less evident are the reasons that
reading others’ code is so important.
When you read others’ code, you see how someone else solved a
programming problem. But don’t treat it as literature; think of it as a lesson
and a challenge. To get better, ask yourself:
- How would I have written that block of
code? What
would you do differently, now that you’ve seen another solution?
- What did I learn? How
can I apply that technique to code I wrote in the past? (“I’d never have
thought to use recursive descent there…”).
- How would I improve this code? And if
it’s an open source project where you are confident you have a better
solution, do it!
- Write code in the author’s style. Practicing
this helps you get into the head of the person who wrote the software,
which can improve
your empathy.
Don’t just idly think about these steps. Write out your answers,
whether in a personal journal, a blog, in
a code review process, or a community forum with other developers. Just as explaining
a problem to a friend can help you sort out the solution, writing down and
sharing your analysis can help you understand why you react to another person’s
code in a given way. It’s all part of that introspection I mentioned earlier,
helping you to dispassionately judge your own strengths and weaknesses.
Warning: It’s easy to read a lot of code without becoming a
great programmer, just as a wannabe writer can read great literature without
improving her own prose. Plenty of developers look at open source or other
software to “find an answer” and, most likely, to copy and paste code that
appears to solve a similar problem. Doing that can actually make you a worse programmer,
since you are blindly accepting others’ wisdom without examining it. (Plus, it
may be buggier than a summer picnic, but because you didn’t take the time to
understand it, you’ll never recognize that you just imported a bug-factory.)
6. Write code, and not just as assignments
Working on personal programming projects has many advantages.
For one, it gives you a way to learn tools and technologies that aren’t
available at your current job, but which make you more marketable for the next
one. Whether you contribute to an open source project or take on pro-bono work
for a local community organization, you’ll gain tech skills and
self-confidence. (Plus, your personal projects demonstrate to would-be
employers that you’re a self-starter who never stops learning.)
Another advantage of writing code for fun is that it forces you
to figure things out on your own. You can’t leave the hard stuff to someone
else, so it keeps you from asking for help too soon.
Pro tip: Don’t choose only personal projects where you never fail.
You need to fail! But you do probably don’t want to fail at work or when you
have a deadline.
7. Work one-on-one with other developers any way you can
It helps to listen
to other people. That might mean pair programming, or going
to a hackathon, or joining a programming user group (such as
the Vermont Coders Connection). When you
contribute to an open source project, pay attention to the feedback you get
from users and from other developers. What commonalities do you see in their
criticism?
You might be lucky
enough to find a personal mentor whom you can trust to guide you in everything
from coding techniques to career decisions. Don’t waste these opportunities.
8. Learn techniques,
not tools
Programming languages, tools, and methodologies come and go.
That’s why it pays to get as much experience as you can with as many languages
and frameworks as possible. Focus on the programming fundamentals, because the
basics never change; pay more attention to architecture than to programming. If
you feel certain that there’s only one right way to do something, it’s probably
time for a reality check. Dogma can hamper your ability to learn new things,
and make you slow to adapt to change.
I could keep going, but a key tenet of self-improvement is
knowing when to stop.
Saturday, March 23, 2019
ITestListener in TestNG Selenium
Test file
package learning;
import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@Listeners(MyListeners.class)
public class ListenerExample {
@Test
public void testToFail() {
Assert.assertTrue(false);
}
public void testToPass(){
Assert.assertTrue(true);
}
}
Listener class
package learning;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.SkipException;
public class MyListeners implements ITestListener {
@Override
public void onTestStart(ITestResult result) {
System.out.println("Test started " + result);
}
@Override
public void onTestSuccess(ITestResult result) {
System.out.println("This test passed " + result);
}
@Override
public void onTestFailure(ITestResult result) {
System.out.println("This test failed " + result);
}
@Override
public void onTestSkipped(ITestResult result) {
System.out.println("Test is Skipped " + result);
throw new SkipException("Skipping this exception");
}
@Override
public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
}
@Override
public void onStart(ITestContext context) {
System.out.println("Test started");
}
@Override
public void onFinish(ITestContext context) {
System.out.println("Test finnished");
}
}
TestNG.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<listeners>
<listener class-name="learning.MyListeners" />
</listeners>
<test name="Test">
<classes>
<class name="learning.HilightExample" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
Friday, March 22, 2019
Highlight elements in Selenium Webdriver
package learning;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class Hightlight {
public static void hilightElement(WebElement element, WebDriver driver) {
for (int i = 0; i < 2; i++) {
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].setAttribute('style', 'background: yellow; border: 2px solid red;');",
element);
}
}
}
package learning;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.Test;
public class HilightExample {
@Test
public void showIt() {
System.setProperty("webdriver.chrome.driver", "C:\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://www.flipkart.com/");
WebElement element = driver.findElement(By.className("_2zrpKA"));
Hightlight.hilightElement(element, driver);
element.sendKeys("hulagabal@gmail.com");
}
}
Tuesday, March 12, 2019
Data provider in TestNG
package muttu.test;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class DataProviderDemo {
@DataProvider(name = "LoginDeatls")
public Object[][] getUserDetails() {
return new Object[][] { { "uName1", "pwd1" }, { "uName2", "pwd2" } };
}
@Test(dataProvider = "LoginDeatls")
public void Login(String name, String password) {
System.out.println(name);
System.out.println(password);
}
}
Labels:
annotations,
coding,
core java,
dataprovider,
development,
java.testng,
selenium,
SeleniumWedriver,
web driver,
WebDriver
Subscribe to:
Posts (Atom)