summaryrefslogtreecommitdiff
path: root/src/main/java/com/mavlushechka/a1qa/driverUtils
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/mavlushechka/a1qa/driverUtils')
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/ActionUtils.java21
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/AlertUtils.java31
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/FrameUtils.java20
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverFactory.java66
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverSingleton.java21
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverUtils.java45
-rw-r--r--src/main/java/com/mavlushechka/a1qa/driverUtils/WebDriverWaitFactory.java17
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"))));
+ }
+
+}