BaseSetup.Java
Код: Выделить всё
package com.paytm.base;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.FileInputStream;
import java.io.IOException;
import java.time.Duration;
import java.util.Properties;
public class BaseSetup {
public WebDriver driver;
public static Properties config = new Properties();
public Logger BASE_LOGGER = LoggerFactory.getLogger(BaseSetup.class);
public WebDriverWait wait;
String browser = config.getProperty("browser");
public WebDriver initDriver(){
if (browser.equals("chrome")){
driver = new ChromeDriver();
driver.get(config.getProperty("url"));
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));
}
return driver;
}
public WebDriverWait explicitWait(WebDriver driver, int seconds){
return new WebDriverWait(driver, Duration.ofSeconds(seconds));
}
public void javaWait(int seconds){
try {
Thread.sleep(seconds*1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
static {
String filePath = "./config.properties";
try {
final FileInputStream fin = new FileInputStream(filePath);
config.load(fin);
fin.close();
} catch (IOException ie) {
//test.log(LogStatus.WARNING, "File not found: " + ie.getLocalizedMessage());
ie.getLocalizedMessage();
}
}
}
Код: Выделить всё
package com.paytm;
import com.paytm.base.BaseSetup;
import com.paytm.pages.CampaignPage;
import com.paytm.pages.LoginPage;
import org.testng.annotations.*;
public class BaseTest extends BaseSetup {
LoginPage loginPage;
CampaignPage campaignPage;
@BeforeTest
public void initPageObjects(){
loginPage = new LoginPage(driver);
campaignPage = new CampaignPage(driver);
}
@BeforeSuite
public void setupBrowser(){
driver = initDriver();
}
@AfterSuite
public void tearBrowser(){
driver.quit();
}
}
Код: Выделить всё
package com.paytm.pages;
import com.paytm.base.BaseSetup;
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.ExpectedConditions;
public class LoginPage extends BaseSetup{
@FindBy(xpath = "a[contains(text(),'Accept')]")
WebElement cookiesAlertAccept;
@FindBy(xpath = "//*[name()='svg' and @class='hmenu']")
WebElement hamburgerIcon;
@FindBy(xpath = "//a[contains(text(), 'Sign in with Email')]")
WebElement emailOption;
@FindBy(xpath = "//iframe[@title='Popup CTA']")
WebElement adPopUpFrame;
@FindBy(xpath = "//iframe[@id=']iframe']")
WebElement sigInIframe;
@FindBy(xpath = "//input[@]id='input_email']")
WebElement emailInput;
@FindBy(xpath = "//input[@oid='input_password']")
WebElement passwordInput;
@FindBy(xpath = "//*[name()='svg']")
WebElement closeAd;
@FindBy(xpath = "//div[@class='677656578']/button")
WebElement signInButton;
@FindBy(xpath = "//button[@alt='Verify']")
WebElement verifyOtpButton;
public LoginPage(WebDriver driver){
this.driver = driver;
PageFactory.initElements(driver, this);
}
public void acceptCookiesAlert(){
wait = explicitWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(cookiesAlertAccept));
cookiesAlertAccept.click();
}
public void closeAdPopUp(){
driver.switchTo().frame(adPopUpFrame);
closeAd.click();
driver.switchTo().defaultContent();
}
public void hamburgerClick(){
wait = explicitWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(hamburgerIcon));
hamburgerIcon.click();
}
public void clickEmailOption(){
wait = explicitWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(emailOption));
emailOption.click();
}
public void sendEmail(){
wait = explicitWait(driver, 10);
driver.switchTo().frame(sigInIframe);
wait.until(ExpectedConditions.elementToBeClickable(emailInput));
emailInput.sendKeys(config.getProperty("email"));
}
public void sendPassword(){
wait = explicitWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(passwordInput));
passwordInput.sendKeys(config.getProperty("password"));
}
public void clickSignInButton(){
wait = explicitWait(driver, 10);
if (signInButton.isEnabled()){
wait.until(ExpectedConditions.elementToBeClickable(signInButton));
signInButton.click();
}
javaWait(10);
}
public void clickVerifyOtpButton(){
wait = explicitWait(driver, 10);
if (verifyOtpButton.isEnabled()){
wait.until(ExpectedConditions.elementToBeClickable(verifyOtpButton));
verifyOtpButton.click();
}
}
}
Код: Выделить всё
package com.paytm.pages;
import com.paytm.base.BaseSetup;
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.ExpectedConditions;
public class CampaignPage extends BaseSetup {
@FindBy(xpath = "//button[text()='Create a New Campaign']")
WebElement createCampaignButton;
public CampaignPage(WebDriver driver){
this.driver = driver;
PageFactory.initElements(driver, this);
}
public String getPageTextAfterLogin(){
wait = explicitWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(createCampaignButton));
return createCampaignButton.getText();
}
}
Код: Выделить всё
package com.paytm;
import org.testng.Assert;
import org.testng.annotations.Test;
public class LoginPageTest extends BaseTest {
@Test(priority = 1)
public void acceptCookieAndCloseAdPopUpCTA(){
loginPage.acceptCookiesAlert();
javaWait(5);
loginPage.closeAdPopUp();
}
@Test(priority = 2)
public void clickHamburgerIcon(){
loginPage.hamburgerClick();
}
@Test(priority = 3)
public void clickEmailOption(){
loginPage.clickEmailOption();
}
@Test(priority = 4)
public void inputEmailId(){
loginPage.sendEmail();
}
@Test(priority = 5)
public void inputPassword(){
loginPage.sendPassword();
}
@Test(priority = 6)
public void clickSignInButton(){
loginPage.clickSignInButton();
javaWait(10);
}
@Test(priority = 7)
public void clickVerifyOtpButton(){
loginPage.clickVerifyOtpButton();
}
}
Код: Выделить всё
package com.paytm;
import org.testng.Assert;
import org.testng.annotations.Test;
public class CampaignPageTest extends BaseTest{
@Test(priority = 1)
public void verifyAvailabilityOfCampaignCreateButton(){
String createCampaignButtonText = campaignPage.getPageTextAfterLogin();
Assert.assertEquals(createCampaignButtonText, "Create a New Campaign");
}
}
Код: Выделить всё
Журналы консоли
java.lang.NullPointerException
на com.paytm.CampaignPageTest.verifyAvailabilityOfCampaignCreateButton(CampaignPageTest.java:10)
в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(собственный метод)
в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
в java. base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
в java.base/java.lang.reflect.Method.invoke(Method.java:566)
в org. testng.internal.invokers.MethodInvocateHelper.invokeMethod(MethodInvoker.java:141)
в org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:686)
в org.testng.internal. Invokers.TestInvoker.invokeTestMethod(TestInvoker.java:230)
в org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:63)
в org.testng.internal.invokers.TestInvoker$ MethodInvokeAgent.invoke(TestInvoker.java:992)
в org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:203)
в org.testng.internal.invokers.TestMethodWorker.invokeTestMethods( TestMethodWorker.java:154)
на org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:134)
на java.base/java.util.ArrayList.forEach(ArrayList.java: 1541)
в org.testng.TestRunner.privateRun(TestRunner.java:739)
в org.testng.TestRunner.run(TestRunner.java:614)
в org.testng.SuiteRunner .runTest(SuiteRunner.java:421)
на org.testng.SuiteRunner.runSequentially(SuiteRunner.java:413)
на org.testng.SuiteRunner.privateRun(SuiteRunner.java:373)
в org.testng.SuiteRunner.run(SuiteRunner.java:312)
в org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
в org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker. java:95)
на org.testng.TestNG.runSuitesSequentially(TestNG.java:1274)
на org.testng.TestNG.runSuitesLocally(TestNG.java:1208)
на org.testng .TestNG.runSuites(TestNG.java:1112)
на org.testng.TestNG.run(TestNG.java:1079)
на com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java :65)
на com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)
Подробнее здесь: https://stackoverflow.com/questions/790 ... um-with-pa
Мобильная версия