diff options
Diffstat (limited to 'src/main/java/com/mavlushechka/a1qa/driverUtils')
7 files changed, 221 insertions, 0 deletions
diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/ActionUtils.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/ActionUtils.java new file mode 100644 index 0000000..88caf46 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/driverUtils/ActionUtils.java @@ -0,0 +1,21 @@ +package com.mavlushechka.a1qa.driverUtils; + +import org.openqa.selenium.Point; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; + +public class ActionUtils { + + private ActionUtils() { + } + + public static void dragAndDrop(WebElement element, Point currentPoint, Point expectedPoint) { + new Actions(WebDriverSingleton.getInstance()) + .moveToElement(element, currentPoint.x, currentPoint.y) + .click() + .dragAndDropBy(element, expectedPoint.x, expectedPoint.y) + .build() + .perform(); + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/AlertUtils.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/AlertUtils.java new file mode 100644 index 0000000..8095365 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/driverUtils/AlertUtils.java @@ -0,0 +1,31 @@ +package com.mavlushechka.a1qa.driverUtils; + +import org.openqa.selenium.Alert; +import org.openqa.selenium.support.ui.ExpectedConditions; + +public class AlertUtils { + + private AlertUtils() { + } + + public static boolean isAlertPresent() { + return ExpectedConditions.alertIsPresent().apply(WebDriverSingleton.getInstance()) != null; + } + + public static String getAlertText() { + return findAlert().getText(); + } + + public static void sendKeysToAlert(String keysToSend) { + findAlert().sendKeys(keysToSend); + } + + public static void acceptAlert() { + findAlert().accept(); + } + + private static Alert findAlert() { + return WebDriverWaitFactory.createWebDriverWait().until(ExpectedConditions.alertIsPresent()); + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/FrameUtils.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/FrameUtils.java new file mode 100644 index 0000000..d270cae --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/driverUtils/FrameUtils.java @@ -0,0 +1,20 @@ +package com.mavlushechka.a1qa.driverUtils; + +public class FrameUtils { + + private FrameUtils() { + } + + public static void switchToFrame(String nameOrId) { + WebDriverSingleton.getInstance().switchTo().frame(nameOrId); + } + + public static void switchToFrame(int index) { + WebDriverSingleton.getInstance().switchTo().frame(index); + } + + public static void switchToDefaultContent() { + WebDriverSingleton.getInstance().switchTo().defaultContent(); + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverFactory.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverFactory.java new file mode 100644 index 0000000..e52a9cf --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverFactory.java @@ -0,0 +1,66 @@ +package com.mavlushechka.a1qa.driverUtils; + +import com.mavlushechka.a1qa.models.Browser; +import com.mavlushechka.a1qa.utils.JSONParser; +import com.mavlushechka.a1qa.utils.LoggerUtils; +import com.mavlushechka.a1qa.utils.StringUtils; +import io.github.bonigarcia.wdm.WebDriverManager; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.firefox.FirefoxDriver; +import org.openqa.selenium.firefox.FirefoxOptions; + +public class WebDriverFactory { + + private WebDriverFactory() { + } + + protected static WebDriver createWebDriver() { + switch (Browser.valueOf(StringUtils.convertToConstantCase(JSONParser.parse("config", "browser.name")))) { + case CHROME -> { + LoggerUtils.info("Creating ChromeDriver."); + return createChromeDriver(); + } + case FIREFOX -> { + LoggerUtils.info("Creating FirefoxDriver."); + return createFirefoxDriver(); + } + default -> { + LoggerUtils.error("Incorrect browser name."); + throw new IllegalStateException("Incorrect browser name."); + } + } + } + + private static ChromeDriver createChromeDriver() { + ChromeOptions chromeOptions = new ChromeOptions(); + + WebDriverManager.chromedriver().setup(); + if (Boolean.parseBoolean(JSONParser.parse("config", "browser.isIncognito"))) { + LoggerUtils.info("Turning on Chrome incognito mode."); + chromeOptions.addArguments("--incognito"); + } + if (Boolean.parseBoolean(JSONParser.parse("config", "browser.isKiosk"))) { + LoggerUtils.info("Turning on Chrome kiosk mode."); + chromeOptions.addArguments("--kiosk"); + } + return new ChromeDriver(chromeOptions); + } + + private static FirefoxDriver createFirefoxDriver() { + FirefoxOptions firefoxOptions = new FirefoxOptions(); + + WebDriverManager.firefoxdriver().setup(); + if (Boolean.parseBoolean(JSONParser.parse("config", "browser.isIncognito"))) { + LoggerUtils.info("Turning on Firefox incognito mode."); + firefoxOptions.addArguments("--private"); + } + if (Boolean.parseBoolean(JSONParser.parse("config", "browser.isKiosk"))) { + LoggerUtils.info("Turning on Firefox kiosk mode."); + firefoxOptions.addArguments("--kiosk"); + } + return new FirefoxDriver(firefoxOptions); + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverSingleton.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverSingleton.java new file mode 100644 index 0000000..ba6f91c --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverSingleton.java @@ -0,0 +1,21 @@ +package com.mavlushechka.a1qa.driverUtils; + +import org.openqa.selenium.WebDriver; + +public class WebDriverSingleton { + + private static WebDriver instance; + + + private WebDriverSingleton() { + } + + protected static WebDriver getInstance() { + if (instance == null) { + instance = WebDriverFactory.createWebDriver(); + } + + return instance; + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverUtils.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverUtils.java new file mode 100644 index 0000000..f4c5ec3 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverUtils.java @@ -0,0 +1,45 @@ +package com.mavlushechka.a1qa.driverUtils; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +import java.util.List; + +public class WebDriverUtils { + + private final static WebDriver webDriver = WebDriverSingleton.getInstance(); + + + private WebDriverUtils() { + } + + public static void goToAddress(String address) { + webDriver.get(address); + } + + public static WebElement findElement(By locator) { + return webDriver.findElement(locator); + } + + public static List<WebElement> findElements(By locator) { + return webDriver.findElements(locator); + } + + public static int getWindowHandlesCount() { + return webDriver.getWindowHandles().size(); + } + + public static void switchToWindowHandle(int index) { + webDriver.switchTo().window(webDriver.getWindowHandles().toArray()[index].toString()); + } + + public static void close() { + webDriver.close(); + } + + public static void quit() { + webDriver.quit(); + } + +} diff --git a/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverWaitFactory.java b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverWaitFactory.java new file mode 100644 index 0000000..81e50a7 --- /dev/null +++ b/src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverWaitFactory.java @@ -0,0 +1,17 @@ +package com.mavlushechka.a1qa.driverUtils; + +import com.mavlushechka.a1qa.utils.JSONParser; +import org.openqa.selenium.support.ui.WebDriverWait; + +import java.time.Duration; + +public class WebDriverWaitFactory { + + private WebDriverWaitFactory() { + } + + public static WebDriverWait createWebDriverWait() { + return new WebDriverWait(WebDriverSingleton.getInstance(), Duration.ofSeconds(Integer.parseInt(JSONParser.parse("config", "webDriverWait.durationOfSeconds")))); + } + +} |