Tuesday, August 2, 2022

Selenium using Data Provider Method

 package coaching;


import java.time.Duration;

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.DataProvider;

import org.testng.annotations.Test;


public class DataProviderTest {

WebDriver driver;

@DataProvider(name = "Authentication")

 public static Object[][] credentials() {

           // The number of times data is repeated, test will be executed the same no. of times

          // Here it will execute two times

           return new Object[][] { { "suriya", "Test@123" }, { "parithy", "Test@123" }};

     }

@Test(dataProvider = "Authentication")


  public void test(String username, String password) {

System.setProperty("webdriver.chrome.driver", "F:\\Suriya\\chromedriver.exe");

driver = new ChromeDriver();

driver.manage().window().maximize();

driver.manage().deleteAllCookies();

driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(30));

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

driver.get("URL");

WebElement username1 = driver.findElement(By.id("userName"));

username1.sendKeys(username);

                       WebElement password1 = driver.findElement(By.id("pwd"));

password1.sendKeys(password);

                      WebElement login = driver.findElement(By.cssSelector(".btn:nth-child(3)"));

login.click();

   }

}


Nodejs get data from Mysql database

 var mysql = require('mysql');

var con = mysql.createConnection({

  host: "localhost",

  user: "root",

  password: "12345",

  port: "3000",

  database: "project",

});

con.connect(function(err) {

  if (err) throw err;

  console.log("Connected!");

});

con.query('SELECT * FROM users', function (err, rows, fields) {

    if (err) throw err;

  console.log('The solution is: ', rows[2].standard);

  });

  con.end();

Convert PDF to Word using Python

 # Importing the Converter() class
from pdf2docx import Converter

# Specifying the pdf & docx files
pdf_file = 'ieep.pdf'
docx_file = 'sample.docx'
try:
cv = Converter(pdf_file)
cv.convert(docx_file)
cv.close()
except:
    print('Conversion Failed')
else:
    print('File Converted Successfully')

Saturday, July 30, 2022

Selenium Tests using Data Provider and TestNG

 package coaching;


import java.io.File;

import java.io.FileInputStream;

import java.io.FileReader;

import java.io.IOException;

import java.text.SimpleDateFormat;

import java.time.Duration;

import java.util.Date;

import java.util.Properties;


import org.apache.commons.io.FileUtils;

import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import org.openqa.selenium.By;

import org.openqa.selenium.OutputType;

import org.openqa.selenium.TakesScreenshot;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.chrome.ChromeDriver;

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 org.testng.annotations.DataProvider;

import org.testng.annotations.Test;


import com.relevantcodes.extentreports.ExtentReports;

import com.relevantcodes.extentreports.ExtentTest;

import com.relevantcodes.extentreports.LogStatus;


public class Login_Page {

public WebDriver driver;

public ExtentReports extent;

public ExtentTest extentTest; //helps to generate the logs in test report.

@BeforeTest

public void setExtent(){

// initialize the HtmlReporter

extent = new ExtentReports("./src/test/resources/Reports/LoginPageReport.html", true); // true - new data insert into report,false-append the old data

//To add system or environment info by using the addSystemInfo method.

extent.addSystemInfo("User Name", "Suriya");

extent.addSystemInfo("Environment", "Automation Testing");

extent.addSystemInfo("Application","Learning Online Course "); 

extent.addSystemInfo("Test Scenario","Login Functionality");


}

@AfterTest

public void endReport(){


extent.flush(); // Flush method is used to erase any previous data on the report and create a new report.

//extent.close(); 

}

public static String getScreenshot(WebDriver driver, String screenshotName) throws IOException{

String dateName = new SimpleDateFormat("yyyyMMddhhmmss").format(new Date());

TakesScreenshot ts = (TakesScreenshot) driver;

File source = ts.getScreenshotAs(OutputType.FILE);

// after execution, you could see a folder "FailedTestsScreenshots"

// under src folder

String destination = System.getProperty("user.dir") + "/FailedTestsScreenshots/" + screenshotName + dateName

+ ".png";

File finalDestination = new File(destination);

FileUtils.copyFile(source, finalDestination);

return destination;

}

@BeforeMethod

public void setup() throws InterruptedException, IOException {


System.setProperty("webdriver.chrome.driver", "F:\\Suriya\\chromedriver.exe");

driver = new ChromeDriver();

driver.manage().window().maximize();

driver.manage().deleteAllCookies();

driver.manage().timeouts().pageLoadTimeout(Duration.ofSeconds(30));

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

driver.get("URL");

}

@Test (dataProvider = "getData") 

public void login(String Username, String Password) {

extentTest = extent.startTest("Enter username and password");

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

WebElement username = driver.findElement(By.id("userName"));

username.sendKeys(Username);

WebElement password = driver.findElement(By.id("pwd"));

password.sendKeys(Password);

WebElement login = driver.findElement(By.cssSelector(".btn:nth-child(3)"));

login.click();

}

@DataProvider(name = "getData") 

// Declare a method whose return type is an array of object. 

    public Object[ ][ ] dataProviderMethod() 

    {

// Create an object of an array object and declare parameters 3 and 2. 

// 3 represents the number of times your test has to be repeated. 

// 2 represents the number of parameters in test data. Here, we are providing two parameters. 

     Object[ ][ ] data = new Object[3][2]; 


// 1st row. 

      data[0][0] = "John"; 

      data[0][1] = "23RYRTE7E5"; 


// 2nd row. 

     data[1][0] = "Sanjana"; 

     data[1][1] = "40EEUE5"; 


// 3rd row. 

     data[2][0] = "Deep"; 

     data[2][1] = "01E575E"; 

      return data; 

   } 

@AfterMethod

public void Down(ITestResult result) throws IOException{


if(result.getStatus()==ITestResult.FAILURE){

extentTest.log(LogStatus.FAIL, "TEST CASE FAILED IS "+result.getName()); //to add name in extent report

extentTest.log(LogStatus.FAIL, "TEST CASE FAILED IS "+result.getThrowable()); //to add error/exception in extent report


String screenshotPath = getScreenshot(driver, result.getName());

extentTest.log(LogStatus.FAIL, extentTest.addScreenCapture(screenshotPath)); //to add screenshot in extent report

//extentTest.log(LogStatus.FAIL, extentTest.addScreencast(screenshotPath)); //to add screencast/video in extent report

}

else if(result.getStatus()==ITestResult.SKIP){

extentTest.log(LogStatus.SKIP, "Test Case SKIPPED IS " + result.getName());

}

else if(result.getStatus()==ITestResult.SUCCESS){

extentTest.log(LogStatus.PASS, "Test Case PASSED IS " + result.getName());


}



extent.endTest(extentTest); //ending test and ends the current test and prepare to create html report

driver.quit();

}

}



Tuesday, June 28, 2022

Selenium Interview Questions and Answers - PART 1

1. What is Selenium?

  •  Selenium is an automation testing tool that is used for automating web-based applications.
  •  It supports multiple browsers, programming languages, and platforms.

2. What are the different forms of selenium?

  •  Selenium WebDriver - It is used to automate web applications using browser methods.
  •  Selenium IDE - It is a plugin that works on record and playback principles.
  •  Selenium RC - Selenium Remote Control(RC) is officially deprecated by Selenium and it used to work on javascript to automate web applications.
  •  Selenium Grid - Allows selenium tests to run in parallel across multiple machines.

3. Advantages of selenium?

  •  Selenium is open source and free to use without any licensing cost.
  •  It supports multiple languages like java, ruby, python, etc.
  •  It supports multi-browser testing.
  •  Using the selenium ide component, non-programmers can also write automation scripts.

4. Limitations of selenium?

  •  We cannot test the desktop applications using selenium.
  •  We cannot test web services using selenium.

5. Which browsers/drivers are supported by the selenium web driver?

 Google chrome - ChromeDriver

 Firefox - FireFoxDriver

 Internet Explorer - InternetExplorerDriver

 Safari - SafariDriver

6. What are the testing types supported by the selenium web driver?

  •  Selenium web driver can be used for performing automated functional and regression testing.

7.Different locators in selenium?

 id,xpath,cssSelector,className,tagName,name,linkText,partialLinkText

8.What is an XPath?

  •  Xpath or XML path is a query language for selecting nodes from XML documents.
  •  XPath is one of the locators supported by the selenium web driver.

 Types of XPath:

 absolute XPath

 relative XPath

9. How can we launch different browsers in the selenium web driver?

  •  By creating an instance of the driver of a particular browser

 WebDriver driver = new ChromeDriver();

10.What is the use of driver.get("url") and driver.navigate().to("url")command?

  •  Both driver. get("url") and driver.navigate().to("URL") commands are used to navigate to a URL passed as a parameter.

11. How can we type text in a textbox element using selenium?

  •  using the sendKeys() method we can type text in a textbox.

 WebElement text = driver.findElement(By.id("search"));

 text.sendKeys("suriya");

12. How we can clear a text written in a textbox?

  •  Using the clear() method we can delete the text written in a textbox.

 driver.findElement(By.id("elementLocator")).clear();

13. How to check a checkbox in selenium?

  •  the click() method used for clicking buttons or radio buttons can be used for checking checkboxes.

14. Difference between close and quit commands?

 driver.close() - used to close the current browser having focus.

 driver.quit() - used to close all the browser instances

15. Maximize browser window - driver.manage().window().maximiza();

16. Find the value - driver.findElement(By.id("locator")).getAttribute("value");

17. How to delete cookies in selenium?

 driver.manage().deleteAllCookies();

18. Double-click an element in selenium?

 Actions action = new Actions(driver);

 WebElement element = driver.findElement(By.id("elementid"));

 action.doubleClick(element).perform();

19. Right-click an element in selenium?

 Actions action = new Actions(driver);

 WebElement element = driver.findElement(By.id("elementid"));

 action.contextClick(element).perform();

20. How to fetch the current page URL in selenium?

 driver.getCurrentUrl();

21. How can we fetch the title of the page in selenium?

 driver.getTitle();

22. fetch the page source in selenium?

 driver.getPageSource();