From ecc97d96d86fca6ff2f672f32aa8bb9597fe6ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Santos=20Laserna=20L=C3=B3pez?= Date: Thu, 6 Aug 2020 10:19:05 +0300 Subject: [PATCH] fix issue with safari and remove bug from thread shutdown --- pom.xml | 2 +- .../java/testUI/SelenideConfiguration.java | 2 + src/main/java/testUI/UIUtils.java | 44 +++++++++++++++++-- src/test/java/TestRunners/TestBrowser.java | 2 + 4 files changed, 45 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index f335250..aa618dc 100644 --- a/pom.xml +++ b/pom.xml @@ -147,7 +147,7 @@ com.codeborne selenide - 5.10.0 + 5.13.0 org.slf4j diff --git a/src/main/java/testUI/SelenideConfiguration.java b/src/main/java/testUI/SelenideConfiguration.java index 34aa3de..63f52e9 100644 --- a/src/main/java/testUI/SelenideConfiguration.java +++ b/src/main/java/testUI/SelenideConfiguration.java @@ -4,6 +4,7 @@ import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.firefox.FirefoxOptions; import org.openqa.selenium.remote.DesiredCapabilities; +import org.openqa.selenium.safari.SafariOptions; public class SelenideConfiguration { @@ -19,6 +20,7 @@ public class SelenideConfiguration { public static String browserPosition = ""; public static boolean startMaximized = false; public static DesiredCapabilities selenideBrowserCapabilities = new DesiredCapabilities(); + public static SafariOptions safariOptions = new SafariOptions(); // public static String pageLoadStrategy; // public static boolean clickViaJs; // public static boolean screenshots; diff --git a/src/main/java/testUI/UIUtils.java b/src/main/java/testUI/UIUtils.java index 2ff2df6..7351ccf 100644 --- a/src/main/java/testUI/UIUtils.java +++ b/src/main/java/testUI/UIUtils.java @@ -5,9 +5,11 @@ import io.appium.java_client.service.local.AppiumDriverLocalService; import io.qameta.allure.Allure; import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.remote.RemoteWebDriver; +import org.openqa.selenium.safari.SafariDriver; import testUI.Utils.TestUIException; import java.net.MalformedURLException; @@ -208,8 +210,8 @@ private static void setChromeDriver() { } } else driver = new ChromeDriver(Configuration.chromeOptions); setDriver(driver); - Runtime.getRuntime().addShutdownHook(new Thread(driver::close)); - Runtime.getRuntime().addShutdownHook(new Thread(driver::quit)); + Runtime.getRuntime().addShutdownHook(new Thread(() -> tryCloseDriver(driver))); + Runtime.getRuntime().addShutdownHook(new Thread(new Thread(() -> tryQuitpDriver(driver)))); } } @@ -221,14 +223,47 @@ private static void setFirefoxDriver() { if (Configuration.remote != null && !Configuration.remote.isEmpty()) { try { driver = new RemoteWebDriver( - new URL(Configuration.remote), Configuration.chromeOptions + new URL(Configuration.remote), Configuration.firefoxOptions ); } catch (MalformedURLException e) { throw new TestUIException(e.getMessage()); } } else driver = new FirefoxDriver(Configuration.firefoxOptions); setDriver(driver); - Runtime.getRuntime().addShutdownHook(new Thread(driver::close)); + Runtime.getRuntime().addShutdownHook(new Thread(new Thread(() -> tryCloseDriver(driver)))); + } + } + + private static void setSafariDriver() { + if (Configuration.browser.toLowerCase().equals("safari")) { + RemoteWebDriver driver; + if (Configuration.remote != null && !Configuration.remote.isEmpty()) { + try { + driver = new RemoteWebDriver( + new URL(Configuration.remote), Configuration.safariOptions + ); + } catch (MalformedURLException e) { + throw new TestUIException(e.getMessage()); + } + } else driver = new SafariDriver(Configuration.safariOptions); + setDriver(driver); + Runtime.getRuntime().addShutdownHook(new Thread(() -> tryCloseDriver(driver))); + } + } + + private static void tryQuitpDriver(WebDriver driver) { + try { + driver.quit(); + } catch (Exception e) { + System.err.println("Could not quit driver, probably already stopped"); + } + } + + private static void tryCloseDriver(WebDriver driver) { + try { + driver.close(); + } catch (Exception e) { + System.err.println("Could not close driver, probably already stopped"); } } @@ -236,6 +271,7 @@ protected static void startSelenideDriver(String urlOrRelativeUrl) { setUpSelenideVariables(); setChromeDriver(); setFirefoxDriver(); + setSafariDriver(); open(urlOrRelativeUrl); } diff --git a/src/test/java/TestRunners/TestBrowser.java b/src/test/java/TestRunners/TestBrowser.java index e7cfd0a..c36b418 100644 --- a/src/test/java/TestRunners/TestBrowser.java +++ b/src/test/java/TestRunners/TestBrowser.java @@ -3,8 +3,10 @@ import io.netty.handler.logging.LogLevel; import io.qameta.allure.junit4.DisplayName; import org.junit.Test; +import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; +import org.openqa.selenium.safari.SafariDriver; import pages.GoogleLandingPage; import testUI.Configuration; import testUI.Utils.GridTestUI;