From 50f2c395447a6721f39cff2ddcaeb5f91f2c77bb Mon Sep 17 00:00:00 2001 From: AndiCover <33127132+AndiCover@users.noreply.github.com> Date: Wed, 9 Nov 2022 05:01:14 +0100 Subject: [PATCH] Selenium error (#12924) * BAEL-5010 added manual and automated selenium setup tests * BAEL-5010 added manual and automated selenium setup tests Co-authored-by: aschoeng --- testing-modules/selenium-junit-testng/pom.xml | 8 +- .../setup/AutomatedSetupLiveTest.java | 83 +++++++++++++++++++ .../selenium/setup/InvalidSetupLiveTest.java | 35 ++++++++ .../selenium/setup/ManualSetupLiveTest.java | 78 +++++++++++++++++ 4 files changed, 203 insertions(+), 1 deletion(-) create mode 100644 testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/AutomatedSetupLiveTest.java create mode 100644 testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/InvalidSetupLiveTest.java create mode 100644 testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/ManualSetupLiveTest.java diff --git a/testing-modules/selenium-junit-testng/pom.xml b/testing-modules/selenium-junit-testng/pom.xml index 56b068870a..cf7c121dc8 100644 --- a/testing-modules/selenium-junit-testng/pom.xml +++ b/testing-modules/selenium-junit-testng/pom.xml @@ -35,6 +35,11 @@ ashot ${ashot.version} + + io.github.bonigarcia + webdrivermanager + ${webdrivermanager.version} + @@ -52,8 +57,9 @@ 6.10 - 3.4.0 + 3.141.59 1.5.4 + 5.3.0 \ No newline at end of file diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/AutomatedSetupLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/AutomatedSetupLiveTest.java new file mode 100644 index 0000000000..aef6540900 --- /dev/null +++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/AutomatedSetupLiveTest.java @@ -0,0 +1,83 @@ +package com.baeldung.selenium.setup; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.edge.EdgeDriver; +import org.openqa.selenium.firefox.FirefoxDriver; + +import io.github.bonigarcia.wdm.WebDriverManager; + +final class AutomatedSetupLiveTest { + + private static final String TITLE_XPATH = "//a[@href='/']"; + private static final String URL = "https://www.baeldung.com"; + + private WebDriver driver; + + private void setupChromeDriver() { + WebDriverManager.chromedriver() + .setup(); + driver = new ChromeDriver(); + options(); + } + + private void setupGeckoDriver() { + WebDriverManager.firefoxdriver() + .setup(); + driver = new FirefoxDriver(); + options(); + } + + private void setupEdgeDriver() { + WebDriverManager.edgedriver() + .setup(); + driver = new EdgeDriver(); + options(); + } + + private void options() { + driver.manage() + .window() + .maximize(); + } + + @Test + void givenChromeDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() { + setupChromeDriver(); + driver.get(URL); + final WebElement title = driver.findElement(By.xpath(TITLE_XPATH)); + + assertEquals("Baeldung", title.getAttribute("title")); + } + + @Test + void givenGeckoDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() { + setupGeckoDriver(); + driver.get(URL); + final WebElement title = driver.findElement(By.xpath(TITLE_XPATH)); + + assertEquals("Baeldung", title.getAttribute("title")); + } + + @Test + void givenEdgeDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() { + setupEdgeDriver(); + driver.get(URL); + final WebElement title = driver.findElement(By.xpath(TITLE_XPATH)); + + assertEquals("Baeldung", title.getAttribute("title")); + } + + @AfterEach + void teardown() { + if (driver != null) { + driver.quit(); + } + } +} \ No newline at end of file diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/InvalidSetupLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/InvalidSetupLiveTest.java new file mode 100644 index 0000000000..09ab823828 --- /dev/null +++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/InvalidSetupLiveTest.java @@ -0,0 +1,35 @@ +package com.baeldung.selenium.setup; + +import static org.junit.jupiter.api.Assertions.assertThrowsExactly; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.edge.EdgeDriver; +import org.openqa.selenium.firefox.FirefoxDriver; + +final class InvalidSetupLiveTest { + + @BeforeAll + static void setup() { + // Make sure the properties are cleared before the tests. + System.clearProperty("webdriver.chrome.driver"); + System.clearProperty("webdriver.gecko.driver"); + System.clearProperty("webdriver.edge.driver"); + } + + @Test + void givenInvalidChromeSetup_whenInit_thenFail() { + assertThrowsExactly(IllegalStateException.class, ChromeDriver::new); + } + + @Test + void givenInvalidFirefoxSetup_whenInit_thenFail() { + assertThrowsExactly(IllegalStateException.class, FirefoxDriver::new); + } + + @Test + void givenInvalidEdgeSetup_whenInit_thenFail() { + assertThrowsExactly(IllegalStateException.class, EdgeDriver::new); + } +} \ No newline at end of file diff --git a/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/ManualSetupLiveTest.java b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/ManualSetupLiveTest.java new file mode 100644 index 0000000000..ef0b5675f8 --- /dev/null +++ b/testing-modules/selenium-junit-testng/src/test/java/com/baeldung/selenium/setup/ManualSetupLiveTest.java @@ -0,0 +1,78 @@ +package com.baeldung.selenium.setup; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.edge.EdgeDriver; +import org.openqa.selenium.firefox.FirefoxDriver; + +final class ManualSetupLiveTest { + + private static final String TITLE_XPATH = "//a[@href='/']"; + private static final String URL = "https://www.baeldung.com"; + + private WebDriver driver; + + private void setupChromeDriver() { + System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe"); + driver = new ChromeDriver(); + options(); + } + + private void setupGeckoDriver() { + System.setProperty("webdriver.gecko.driver", "src/test/resources/geckodriver.exe"); + driver = new FirefoxDriver(); + options(); + } + + private void setupEdgeDriver() { + System.setProperty("webdriver.edge.driver", "src/test/resources/msedgedriver.exe"); + driver = new EdgeDriver(); + options(); + } + + private void options() { + driver.manage() + .window() + .maximize(); + } + + @Test + void givenChromeDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() { + setupChromeDriver(); + driver.get(URL); + final WebElement title = driver.findElement(By.xpath(TITLE_XPATH)); + + assertEquals("Baeldung", title.getAttribute("title")); + } + + @Test + void givenEdgeDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() { + setupEdgeDriver(); + driver.get(URL); + final WebElement title = driver.findElement(By.xpath(TITLE_XPATH)); + + assertEquals("Baeldung", title.getAttribute("title")); + } + + @Test + void givenGeckoDriver_whenNavigateToBaeldung_thenFindTitleIsSuccessful() { + setupGeckoDriver(); + driver.get(URL); + final WebElement title = driver.findElement(By.xpath(TITLE_XPATH)); + + assertEquals("Baeldung", title.getAttribute("title")); + } + + @AfterEach + void teardown() { + if (driver != null) { + driver.quit(); + } + } +}