The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Saurabh Kamble, 2023-01-02 02:22:12

Selenium Notes

Selenium Notes

Project structure

Pom.xml file
<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
https://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>
<groupId>SauceDemo16thApril</groupId>
<artifactId>SauceDemo16thApril</artifactId>
<version>0.0.1-SNAPSHOT</version>

<dependencies>
<dependency>

<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

</dependencies>
</project>
LOGIN_POM_CLASS

package com.sauceDemo.POMClasses;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class LoginPOMClass
{

private WebDriver driver;
private Actions act;

@FindBy(xpath ="//form//div[1]//input" )
private WebElement username;

public void sendUsername()
{

username.sendKeys("standard_user");
}

@FindBy(xpath="//form//div[2]//input")
private WebElement passWord;

public void sendPassword()
{

passWord.sendKeys("secret_sauce");
}

@FindBy(xpath="/html/body/div/div/div[2]/div[1]/div[1]/div/form/input")
private WebElement loginButton;

//normal click process-webelement method
// public void clickOnLoginButton()
// {
// loginButton.click();
// }

//mouse action click method

public void clickOnLoginButton()
{

act.click(loginButton).perform();

}

public LoginPOMClass(WebDriver driver)
{

this.driver = driver;
PageFactory.initElements(driver, this);

act = new Actions(driver);
}

}
HOME_PAGE_CLASS
package com.sauceDemo.POMClasses;

import java.util.List;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.Select;

public class HomePOMClass
{

private WebDriver driver;
private Select s;

//settingButton
@FindBy(xpath="//button[@id='react-burger-menu-btn']")
private WebElement settingButton;

public void clickOnSettingButton()
{

settingButton.click();
}

//logOut button
@FindBy(xpath="//a[text()='Logout']")
private WebElement logOutButton;

public void clickOnLogOutButton()
{

logOutButton.click();
}

//bag element
@FindBy(xpath="(//button[text()='Add to cart'])[1]")
private WebElement bagButton;

public void clickOnBagButton()

{
bagButton.click();

}

//add to cart button

@FindBy(xpath="//span[@class='shopping_cart_badge']")
private WebElement addToCartButton;

public String getTextFromCartButton()
{

String totalProducts= addToCartButton.getText();
return totalProducts;
}

//multiple products elements
@FindBy(xpath="//button[text()='Add to cart']")
private List<WebElement> multiAddToCartButton;

public void clickAllProduct()
{

for(int i=0; i<multiAddToCartButton.size();i++)
{

multiAddToCartButton.get(i).click();
}
}

//filter dropdown

@FindBy(xpath="//select[@class='product_sort_container']")
private WebElement dropDownFilter;

public void clickOnDropDownFilter()
{

dropDownFilter.click();
s.selectByVisibleText("Price (low to high)");

}

public HomePOMClass(WebDriver driver)
{

this.driver = driver;

PageFactory.initElements(driver, this);

s = new Select(dropDownFilter);
}

}
TEST_BASE_CLASS
package com.sauceDemo.TestClasses;
import java.io.IOException;
import java.time.Duration;

import java.util.concurrent.TimeUnit;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Parameters;

import com.sauceDemo.POMClasses.LoginPOMClass;
import com.sauceDemo.UtilityClasses.ScreenshotClass;

public class TestBaseClass
{

WebDriver driver;

Logger log = Logger.getLogger("SauceDemo16thApril");

@Parameters("browserName")
@BeforeMethod
public void setUP(String browserName)
{
if(browserName.equals("chrome"))
{
System.setProperty("webdriver.chrome.driver",
"./DriverFolder/chromedriver.exe");
driver = new ChromeDriver();
}

else if(browserName.equals("firefox"))
{
System.setProperty("webdriver.gecko.driver",

"./DriverFolder/geckodriver.exe");
driver = new FirefoxDriver();
}
else
{

System.out.println("throw the error");
}

PropertyConfigurator.configure("log4j.properties");

log.info("Browser is opened");

driver.manage().window().maximize();
log.info("Browser is maximized");

driver.get("https://www.saucedemo.com/");
log.info("URL is opened");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
//login
LoginPOMClass lp = new LoginPOMClass(driver);
lp.sendUsername();
log.info("username is entered");
lp.sendPassword();
log.info("password is entered");
lp.clickOnLoginButton();
log.info("clicked on login button");
}
@AfterMethod
public void tearDown()
{
//logOut
driver.quit();
log.info("browser is closed");
}
}
VERIFY_LOGIN_CLASS
package com.sauceDemo.TestClasses;

import java.io.IOException;
import java.time.Duration;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import com.sauceDemo.POMClasses.LoginPOMClass;

import com.sauceDemo.UtilityClasses.ScreenshotClass;

public class TC001_VerifyLoginFunctionality extends TestBaseClass
{

@Test
public void loginFuntionality() throws IOException
{

//screenshot
ScreenshotClass.takeScreenshot(driver);
log.info("screenshot is taken");

//validation
String expectedTitle = "Swag Labs"; //given

String actualTitle = driver.getTitle(); //actual

log.info("doing validation-for login functionality");
Assert.assertEquals(actualTitle, expectedTitle,"title not matched");

}

}

VERIFY_LOGOUT_CLASS
package com.sauceDemo.TestClasses;

import java.time.Duration;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import com.sauceDemo.POMClasses.HomePOMClass;
import com.sauceDemo.POMClasses.LoginPOMClass;

public class TC002_VerifyLogOutFunctionality extends TestBaseClass
{

@Test
public void logOutFunctionality()
{

//homePage
//logOutActivity

HomePOMClass hp = new HomePOMClass(driver);
hp.clickOnSettingButton();
System.out.println("Click on SettingButton");
hp.clickOnLogOutButton();
System.out.println("Click on LogOutButton");

System.out.println("Applying the validation");

//loginpage
String expectedTitle = "Swag Labs";
String actualTitle = driver.getTitle();

Assert.assertEquals(actualTitle, expectedTitle);
}

}
VERIFY_SINGLE_BAG
package com.sauceDemo.TestClasses;

import java.time.Duration;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import com.sauceDemo.POMClasses.HomePOMClass;
import com.sauceDemo.POMClasses.LoginPOMClass;

public class TC003_VerfiyBagProductAddtoCartFunctionality extends TestBaseClass
{

@Test
public void bagProductAddTOCartFunctionality()
{

//homePage
HomePOMClass hp = new HomePOMClass(driver);
hp.clickOnBagButton();

String actaulCount = hp.getTextFromCartButton();

String expectedCount = "1";

Assert.assertEquals(actaulCount, expectedCount);
}

}
VERIFY_MULTIPLE_PRODUCT
package com.sauceDemo.TestClasses;

import java.time.Duration;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import com.sauceDemo.POMClasses.HomePOMClass;
import com.sauceDemo.POMClasses.LoginPOMClass;

public class TC004_VerifyMultipleproductAddtoCartFunctionality extends TestBaseClass
{

@Test
public void mutipleProductAddToCartFunctionality()
{

//homePage
HomePOMClass hp = new HomePOMClass(driver);
hp.clickAllProduct();

String actualCount = hp.getTextFromCartButton();
String expectedCount = "6";

Assert.assertEquals(actualCount, expectedCount);
}

}

SCREENSHOT_CODE
package com.sauceDemo.UtilityClasses;

import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.io.FileHandler;

public class ScreenshotClass
{

public static void takeScreenshot(WebDriver driver) throws IOException
{

//date & time format code
Date d = new Date();
DateFormat d1 = new SimpleDateFormat("MM-dd-yy & HH-mm-ss");
String date = d1.format(d);

//screenshot
TakesScreenshot ts = (TakesScreenshot)driver;
File sourceFile = ts.getScreenshotAs(OutputType.FILE);
File destFile = new File("./ScreenshotFolder/SauceDemo"+date+".jpg");
FileHandler.copy(sourceFile, destFile);
System.out.println("login screenshot is taken");

}

}

TESTNG_SUITE
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">

<test thread-count="5" name="ChromeTest">
<parameter name="browserName" value="chrome"></parameter>

<classes>
<class

name="com.sauceDemo.TestClasses.TC002_VerifyLogOutFunctionality"/>
<class

name="com.sauceDemo.TestClasses.TC001_VerifyLoginFunctionality"/>
<class

name="com.sauceDemo.TestClasses.TC004_VerifyMultipleproductAddtoCartFunctiona
lity"/>

<class
name="com.sauceDemo.TestClasses.TC003_VerfiyBagProductAddtoCartFunctionality"
/>

</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

LOG4J_CODE_SETTING CODE
#Set level
log4j.rootCategory=debug, console, file

# Appender which writes to console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{MM-DD-YYYY HH:mm:ss} %F %-5p [%t] %c{2} %L -
%m%n

# Appender which writes to a file
log4j.appender.file=org.apache.log4j.RollingFileAppender

log4j.appender.file.File=application.log
# Defining maximum size of a log file
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %5p [%t] %c{1}:%L - %m%n
log4j.appender.file.Append=true
APPLICATION_LOG_FILE—ACTUAL FILE

LOG_4J_files creation process



Assignment







package listener;

import org.testng.ITestListener;
import org.testng.ITestResult;

public class Listener implements ITestListener
{

public void onTestStart(ITestResult result)
{

System.out.println("Sanity test is started");
}

public void onTestSuccess(ITestResult result)
{

System.out.println("TC is successfully passed");
}

public void onTestFailure(ITestResult result)
{

System.out.println("Screesnshot is taken");
}

}

package listener;

import org.testng.Assert;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;

@Listeners(listener.Listener.class)
public class SampleTestClass
{

@Test
public void testA()
{

System.out.println("test-A");
Assert.assertTrue(true);
}

@Test
public void testB()
{

System.out.println("test-B");
Assert.assertTrue(false);
}

@Test

public void testC()
{

System.out.println("test-C");
Assert.assertTrue(false);
}
}

Listener Screenshot Code in onTestFailure() method
package com.SauceDemo.Utility;
import java.io.File;
import java.io.IOException;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.io.FileHandler;
import org.testng.ITestListener;
import org.testng.ITestResult;
import com.SauceDemo.Practice.SampleClass1;

public class Listener implements ITestListener
{

WebDriver driver;

public void onTestFailure(ITestResult result)
{

System.out.println("Test case is failed and hence taking
the screenshot");

this.driver = ((SampleClass1)result.getInstance()).driver;

TakesScreenshot ts = (TakesScreenshot)driver;
File sourceFile = ts.getScreenshotAs(OutputType.FILE);
File destFile = new
File("./screenshot/SauceDemoLogin3105.jpg");
try
{

FileHandler.copy(sourceFile, destFile);
}
catch (IOException e)
{

e.printStackTrace();
}
}
TestClass where test case will get fail

package com.SauceDemo.Practice;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.Assert;

import org.testng.annotations.Listeners;

import org.testng.annotations.Test;

@Listeners(com.SauceDemo.Utility.Listener.class)

public class SampleClass1

{

@Test
public void verifyTitle()
{
System.setProperty("webdriver.chrome.driver",
"./drivers/chromedriver.exe");
driver = new ChromeDriver();
driver.get("https://www.saucedemo.com/");
Assert.assertTrue(false);
}

}





















https://github.com/pavanpuri1107/16thAprilBatch.git





















Program1

package exceptionHandling;

public class EH1
{

public static void main(String[] args)
{

//Compile-Time-Exception
//checked exception

ystem.out.println("Hii Rahul");

System.out.println("Hii");
System.out.println("Hello");
System.out.println("Bye");

}

}

Program2

package exceptionHandling;

public class EH2
{

public static void main(String[] args)
{

int a[] = {10,20,30};
// 0 1 2

System.out.println(a[0]); //10
System.out.println(a[1]); //20
System.out.println(a[2]); //30

//run time exception
//unchecked exception

System.out.println(a[3]); //????

}

}

Program3

package exceptionHandling;

public class EH3
{

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

{
//compile time
//checked excpetion

Thread.sleep(2000);

System.out.println("Hello Rahul");

}

}


Click to View FlipBook Version