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



 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");