From e29903d87bdbf080ace5ea5ea7706c2ccbf97f19 Mon Sep 17 00:00:00 2001 From: "Yury.Chychayeu" Date: Thu, 18 Jan 2024 14:30:29 +0100 Subject: [PATCH 1/2] better base --- pom.xml | 18 ++++++++++--- .../java/web_driver/WebDriverFactory.java | 27 +++++++++++++++++++ src/test/java/utils/BaseTest.java | 22 +++++++++++++++ 3 files changed, 64 insertions(+), 3 deletions(-) create mode 100644 src/main/java/web_driver/WebDriverFactory.java create mode 100644 src/test/java/utils/BaseTest.java diff --git a/pom.xml b/pom.xml index 54175bd..cf0a75b 100644 --- a/pom.xml +++ b/pom.xml @@ -16,9 +16,21 @@ - junit - junit - 3.8.1 + org.seleniumhq.selenium + selenium-java + 4.10.0 + + + + io.github.bonigarcia + webdrivermanager + 5.4.0 + + + + org.testng + testng + 7.8.0 test diff --git a/src/main/java/web_driver/WebDriverFactory.java b/src/main/java/web_driver/WebDriverFactory.java new file mode 100644 index 0000000..b1efff3 --- /dev/null +++ b/src/main/java/web_driver/WebDriverFactory.java @@ -0,0 +1,27 @@ +package web_driver; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.edge.EdgeDriver; +import org.openqa.selenium.edge.EdgeOptions; + +public class WebDriverFactory { + + public WebDriver getDriver(){ + System.setProperty("webdriver.edge.driver", "src/main/resources/msedgedriver.exe"); + return new EdgeDriver(edgeOptions()); + } + + public EdgeOptions edgeOptions(){ + EdgeOptions edgeOptions = new EdgeOptions(); + + edgeOptions.setHeadless(true); + edgeOptions.addArguments("--disable-gpu"); + edgeOptions.addArguments("--window-size=1920,1200"); + edgeOptions.addArguments("--ignore-certificate-errors"); + edgeOptions.addArguments("--silent"); + edgeOptions.addArguments("--start-maximized"); + + return edgeOptions; + } + +} \ No newline at end of file diff --git a/src/test/java/utils/BaseTest.java b/src/test/java/utils/BaseTest.java new file mode 100644 index 0000000..50e49d7 --- /dev/null +++ b/src/test/java/utils/BaseTest.java @@ -0,0 +1,22 @@ +package utils; + +import org.openqa.selenium.WebDriver; +import org.testng.annotations.AfterSuite; +import org.testng.annotations.BeforeMethod; +import web_driver.WebDriverFactory; + +public class BaseTest { + + protected static WebDriver driver; + + @BeforeMethod + public void setUp(){ + WebDriverFactory factory = new WebDriverFactory(); + driver = factory.getDriver(); + } + + @AfterSuite + public void wrapUp(){ + driver.quit(); + } +} From a188d081da113fbd11c7da57e370f0c118cecb17 Mon Sep 17 00:00:00 2001 From: "Yury.Chychayeu" Date: Wed, 14 Feb 2024 19:28:04 +0100 Subject: [PATCH 2/2] page factory --- src/main/java/utils/BasePage.java | 11 +++++++ src/{test => main}/java/utils/BaseTest.java | 0 src/test/java/page/InventoryPage.java | 21 +++++++++++++ src/test/java/page/LoginPage.java | 35 +++++++++++++++++++++ src/test/java/test/LoginTest.java | 21 +++++++++++++ 5 files changed, 88 insertions(+) create mode 100644 src/main/java/utils/BasePage.java rename src/{test => main}/java/utils/BaseTest.java (100%) create mode 100644 src/test/java/page/InventoryPage.java create mode 100644 src/test/java/page/LoginPage.java create mode 100644 src/test/java/test/LoginTest.java diff --git a/src/main/java/utils/BasePage.java b/src/main/java/utils/BasePage.java new file mode 100644 index 0000000..52b65fc --- /dev/null +++ b/src/main/java/utils/BasePage.java @@ -0,0 +1,11 @@ +package utils; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.PageFactory; + +public class BasePage { + + public BasePage(WebDriver driver){ + PageFactory.initElements(driver, this); + } +} diff --git a/src/test/java/utils/BaseTest.java b/src/main/java/utils/BaseTest.java similarity index 100% rename from src/test/java/utils/BaseTest.java rename to src/main/java/utils/BaseTest.java diff --git a/src/test/java/page/InventoryPage.java b/src/test/java/page/InventoryPage.java new file mode 100644 index 0000000..7cc8eb2 --- /dev/null +++ b/src/test/java/page/InventoryPage.java @@ -0,0 +1,21 @@ +package page; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindAll; +import org.openqa.selenium.support.FindBy; +import utils.BasePage; + +import java.util.List; + +public class InventoryPage extends BasePage { + + @FindAll({ + @FindBy(className = "inventory_item_description") + }) + public List items; + + public InventoryPage(WebDriver driver){ + super(driver); + } +} diff --git a/src/test/java/page/LoginPage.java b/src/test/java/page/LoginPage.java new file mode 100644 index 0000000..edce4e1 --- /dev/null +++ b/src/test/java/page/LoginPage.java @@ -0,0 +1,35 @@ +package page; + +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindAll; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.FindBys; +import utils.BasePage; + +public class LoginPage extends BasePage { + + @FindBy(id = "user-name") + public WebElement loginInput; + + @FindBys({ + @FindBy(className = "form_group"), + @FindBy(id = "password") + }) + public WebElement passwordInput; + + @FindAll({ + @FindBy(id = "gfrihgidfhnv"), + @FindBy(name = "foidsjofjvg"), + @FindBy(id = "login-button") + }) + public WebElement loginButton; + + public LoginPage(WebDriver driver){ + super(driver); + driver.get("https://www.saucedemo.com/"); + } + + + +} diff --git a/src/test/java/test/LoginTest.java b/src/test/java/test/LoginTest.java new file mode 100644 index 0000000..2292982 --- /dev/null +++ b/src/test/java/test/LoginTest.java @@ -0,0 +1,21 @@ +package test; + +import org.testng.Assert; +import org.testng.annotations.Test; +import page.InventoryPage; +import page.LoginPage; +import utils.BaseTest; + +public class LoginTest extends BaseTest { + + + @Test + public void loginTest(){ + LoginPage loginPage = new LoginPage(driver); + loginPage.loginInput.sendKeys("standard_user"); + loginPage.passwordInput.sendKeys("secret_sauce"); + loginPage.loginButton.click(); + InventoryPage inventoryPage = new InventoryPage(driver); + Assert.assertEquals(inventoryPage.items.size(), 6); + } +}