diff --git a/examples/java/.gitignore b/examples/java/.gitignore
new file mode 100644
index 000000000000..77b33f676e09
--- /dev/null
+++ b/examples/java/.gitignore
@@ -0,0 +1,6 @@
+/.gradle
+/build
+/out
+/target
+/selenium.pdf
+/selenium.xml*
diff --git a/examples/java/build.gradle b/examples/java/build.gradle
index 38a69565da1a..3545907b2eba 100644
--- a/examples/java/build.gradle
+++ b/examples/java/build.gradle
@@ -10,8 +10,10 @@ repositories {
}
dependencies {
- testImplementation 'org.seleniumhq.selenium:selenium-java:4.38.0'
- testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.13.4'
+ testImplementation 'org.seleniumhq.selenium:selenium-java:4.40.0'
+ testImplementation 'org.seleniumhq.selenium:selenium-grid:4.40.0'
+ testImplementation 'org.junit.jupiter:junit-jupiter-engine:6.0.2'
+ testImplementation 'com.titusfortner:selenium-logger:2.4.0'
}
test {
diff --git a/examples/java/pom.xml b/examples/java/pom.xml
index d5f8c184b8e0..a3482e95a786 100644
--- a/examples/java/pom.xml
+++ b/examples/java/pom.xml
@@ -13,7 +13,7 @@
17
17
UTF-8
- 4.38.0
+ 4.40.0
@@ -44,13 +44,14 @@
org.junit.jupiter
junit-jupiter-engine
- 5.13.4
+ 6.0.2
test
com.titusfortner
selenium-logger
2.4.0
+ test
diff --git a/examples/java/src/test/java/dev/selenium/BaseTest.java b/examples/java/src/test/java/dev/selenium/BaseTest.java
index 70ac73b5a63f..25682d92260b 100644
--- a/examples/java/src/test/java/dev/selenium/BaseTest.java
+++ b/examples/java/src/test/java/dev/selenium/BaseTest.java
@@ -59,15 +59,11 @@ protected ChromeDriver startChromeDriver(ChromeOptions options) {
}
protected static ChromeOptions getDefaultChromeOptions() {
- ChromeOptions options = new ChromeOptions();
- options.addArguments("--no-sandbox");
- return options;
+ return new ChromeOptions().addArguments("--no-sandbox");
}
protected static EdgeOptions getDefaultEdgeOptions() {
- EdgeOptions options = new EdgeOptions();
- options.addArguments("--no-sandbox");
- return options;
+ return new EdgeOptions().addArguments("--no-sandbox");
}
protected File getTempDirectory(String prefix) {
@@ -156,7 +152,7 @@ protected void enableLogging() {
}
@AfterEach
- public void quit() {
+ public final void closeBrowser() {
if (driver != null) {
driver.quit();
}
diff --git a/examples/java/src/test/java/dev/selenium/bidirectional/webdriver_bidi/user_context/SingleInstanceCookieParallelTest.java b/examples/java/src/test/java/dev/selenium/bidirectional/webdriver_bidi/user_context/SingleInstanceCookieParallelTest.java
index a40a6da5a85c..56ad7ea49848 100644
--- a/examples/java/src/test/java/dev/selenium/bidirectional/webdriver_bidi/user_context/SingleInstanceCookieParallelTest.java
+++ b/examples/java/src/test/java/dev/selenium/bidirectional/webdriver_bidi/user_context/SingleInstanceCookieParallelTest.java
@@ -128,6 +128,9 @@ void canHaveTheDefaultBackgroundColor() {
@AfterAll
public static void cleanup() {
- driver.quit();
+ if (driver != null) {
+ driver.quit();
+ driver = null;
+ }
}
}
diff --git a/examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java b/examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java
index 460c07b02e22..1e7780da7e3c 100644
--- a/examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java
+++ b/examples/java/src/test/java/dev/selenium/browsers/EdgeTest.java
@@ -218,7 +218,6 @@ public void setNetworkConditions() {
() -> Assertions.assertEquals(networkConditions.getUploadThroughput(), actualConditions.getUploadThroughput())
);
((EdgeDriver) driver).deleteNetworkConditions();
- driver.quit();
}
@Test
diff --git a/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java b/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java
index c66400cce76c..3cf27c3e39c2 100644
--- a/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java
+++ b/examples/java/src/test/java/dev/selenium/browsers/FirefoxTest.java
@@ -18,17 +18,16 @@
import org.openqa.selenium.firefox.*;
import org.openqa.selenium.remote.service.DriverFinder;
-
-
-
-
public class FirefoxTest extends BaseTest {
private FirefoxDriver driver;
@AfterEach
public void clearProperties() {
System.clearProperty(GeckoDriverService.GECKO_DRIVER_LOG_PROPERTY);
- System.clearProperty(GeckoDriverService.GECKO_DRIVER_LOG_LEVEL_PROPERTY);driver.quit();
+ System.clearProperty(GeckoDriverService.GECKO_DRIVER_LOG_LEVEL_PROPERTY);
+ if (driver != null) {
+ driver.quit();
+ }
}
@Test
@@ -186,24 +185,20 @@ public void fullPageScreenshot() throws Exception {
// Verify the screenshot file exists
Assertions.assertTrue(targetFile.exists(), "The full page screenshot file should exist");
Files.deleteIfExists(targetFile.toPath());
-
- driver.quit();
}
@Test
public void setContext() {
driver = startFirefoxDriver(new FirefoxOptions().addArguments("-remote-allow-system-access"));
- ((HasContext) driver).setContext(FirefoxCommandContext.CHROME);
+ driver.setContext(FirefoxCommandContext.CHROME);
driver.executeScript("console.log('Inside Chrome context');");
// Verify the context is back to "content"
Assertions.assertEquals(
- FirefoxCommandContext.CHROME, ((HasContext) driver).getContext(),
+ FirefoxCommandContext.CHROME, driver.getContext(),
"The context should be 'chrome'"
);
-
- driver.quit();
}
@Test
@@ -214,7 +209,5 @@ public void firefoxProfile() {
options.setProfile(profile);
driver = new FirefoxDriver(options);
-
- driver.quit();
}
}
diff --git a/examples/java/src/test/java/dev/selenium/drivers/HttpClientTest.java b/examples/java/src/test/java/dev/selenium/drivers/HttpClientTest.java
index 16b36c91432c..e32b7035d4ef 100644
--- a/examples/java/src/test/java/dev/selenium/drivers/HttpClientTest.java
+++ b/examples/java/src/test/java/dev/selenium/drivers/HttpClientTest.java
@@ -48,7 +48,6 @@ public void remoteWebDriverWithClientConfig() throws Exception {
.address(gridUrl)
.config(clientConfig)
.build();
- driver.quit();
}
@Test
@@ -67,7 +66,6 @@ public void remoteWebDriverIgnoreSSL() throws Exception {
.address(gridUrl)
.config(clientConfig)
.build();
- driver.quit();
}
@Test
@@ -85,7 +83,6 @@ public void remoteWebDriverWithEmbedAuthUrl() throws Exception {
.address(embedAuthToUrl(gridUrl, "admin", "myStrongPassword"))
.config(clientConfig)
.build();
- driver.quit();
}
private URL embedAuthToUrl(URL url, String username, String password) throws Exception {
diff --git a/examples/java/src/test/java/dev/selenium/elements/InformationTest.java b/examples/java/src/test/java/dev/selenium/elements/InformationTest.java
index 02d480fa3dab..9b5ed42970f3 100644
--- a/examples/java/src/test/java/dev/selenium/elements/InformationTest.java
+++ b/examples/java/src/test/java/dev/selenium/elements/InformationTest.java
@@ -6,7 +6,9 @@
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
+
import java.time.Duration;
+
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -15,57 +17,56 @@ public class InformationTest {
@Test
public void informationWithElements() {
- WebDriver driver = new ChromeDriver();
- driver.manage().timeouts().implicitlyWait(Duration.ofMillis(500));
- // Navigate to Url
- driver.get("https://www.selenium.dev/selenium/web/inputs.html");
-
- // isDisplayed
- // Get boolean value for is element display
- boolean isEmailVisible = driver.findElement(By.name("email_input")).isDisplayed();
- assertTrue(isEmailVisible);
+ WebDriver driver = new ChromeDriver();
+ driver.manage().timeouts().implicitlyWait(Duration.ofMillis(500));
+ // Navigate to Url
+ driver.get("https://www.selenium.dev/selenium/web/inputs.html");
- // isEnabled
- // returns true if element is enabled else returns false
- boolean isEnabledButton = driver.findElement(By.name("button_input")).isEnabled();
- assertTrue(isEnabledButton);
+ // isDisplayed
+ // Get boolean value for is element display
+ boolean isEmailVisible = driver.findElement(By.name("email_input")).isDisplayed();
+ assertTrue(isEmailVisible);
- // isSelected
- // returns true if element is checked else returns false
- boolean isSelectedCheck = driver.findElement(By.name("checkbox_input")).isSelected();
- assertTrue(isSelectedCheck);
+ // isEnabled
+ // returns true if element is enabled
+ boolean isEnabledButton = driver.findElement(By.name("button_input")).isEnabled();
+ assertTrue(isEnabledButton);
- // TagName
- // returns TagName of the element
- String tagNameInp = driver.findElement(By.name("email_input")).getTagName();
- assertEquals("input", tagNameInp);
+ // isSelected
+ // returns true if element is checked
+ boolean isSelectedCheck = driver.findElement(By.name("checkbox_input")).isSelected();
+ assertTrue(isSelectedCheck);
- // GetRect
- // Returns height, width, x and y coordinates referenced element
- Rectangle res = driver.findElement(By.name("range_input")).getRect();
- // Rectangle class provides getX,getY, getWidth, getHeight methods
- assertEquals(10, res.getX());
+ // TagName
+ // returns TagName of the element
+ String tagNameInp = driver.findElement(By.name("email_input")).getTagName();
+ assertEquals("input", tagNameInp);
- // Retrieves the computed style property 'font-size' of field
- String cssValue = driver.findElement(By.name("color_input")).getCssValue("font-size");
- assertEquals(cssValue, "13.3333px");
+ // GetRect
+ // Returns height, width, x and y coordinates referenced element
+ Rectangle res = driver.findElement(By.name("range_input")).getRect();
+ // Rectangle class provides getX,getY, getWidth, getHeight methods
+ assertEquals(10, res.getX());
+ // Retrieves the computed style property 'font-size' of field
+ String cssValue = driver.findElement(By.name("color_input")).getCssValue("font-size");
+ assertEquals(cssValue, "13.3333px");
- // GetText
- // Retrieves the text of the element
- String text = driver.findElement(By.tagName("h1")).getText();
- assertEquals(text, "Testing Inputs");
+ // GetText
+ // Retrieves the text of the element
+ String text = driver.findElement(By.tagName("h1")).getText();
+ assertEquals(text, "Testing Inputs");
- // FetchAttributes
- // identify the email text box
- WebElement emailTxt = driver.findElement(By.name(("email_input")));
- // fetch the value property associated with the textbox
- String valueInfo = emailTxt.getAttribute("value");
- assertEquals(valueInfo,"admin@localhost");
+ // FetchAttributes
+ // identify the email text box
+ WebElement emailTxt = driver.findElement(By.name(("email_input")));
+ // fetch the value property associated with the textbox
+ String valueInfo = emailTxt.getAttribute("value");
+ assertEquals(valueInfo, "admin@localhost");
- driver.quit();
+ driver.quit();
}
}
diff --git a/examples/java/src/test/java/dev/selenium/getting_started/UsingSeleniumTest.java b/examples/java/src/test/java/dev/selenium/getting_started/UsingSeleniumTest.java
index 26ddc5229767..97639092a177 100644
--- a/examples/java/src/test/java/dev/selenium/getting_started/UsingSeleniumTest.java
+++ b/examples/java/src/test/java/dev/selenium/getting_started/UsingSeleniumTest.java
@@ -43,8 +43,10 @@ public void eightComponents() {
}
@AfterEach
- public void teardown() {
- driver.quit();
+ public final void teardown() {
+ if (driver != null) {
+ driver.quit();
+ }
}
}
diff --git a/examples/java/src/test/java/dev/selenium/interactions/AlertsTest.java b/examples/java/src/test/java/dev/selenium/interactions/AlertsTest.java
index 43c70347f44d..02f57b9e4d70 100644
--- a/examples/java/src/test/java/dev/selenium/interactions/AlertsTest.java
+++ b/examples/java/src/test/java/dev/selenium/interactions/AlertsTest.java
@@ -44,11 +44,6 @@ public void createSession() {
wait = new WebDriverWait(driver, Duration.ofSeconds(10));
}
- @AfterEach
- public void endSession() {
- driver.quit();
- }
-
@Test
public void alertInformationTest() {
driver.get("https://www.selenium.dev/selenium/web/alerts.html#");
diff --git a/examples/java/src/test/java/dev/selenium/interactions/CookiesTest.java b/examples/java/src/test/java/dev/selenium/interactions/CookiesTest.java
index aea33ef54a0d..1828d762aac8 100644
--- a/examples/java/src/test/java/dev/selenium/interactions/CookiesTest.java
+++ b/examples/java/src/test/java/dev/selenium/interactions/CookiesTest.java
@@ -17,111 +17,106 @@
package dev.selenium.interactions;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Assertions;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
+
import java.util.Set;
public class CookiesTest {
- WebDriver driver = new ChromeDriver();
- @Test
- public void addCookie() {
- driver.get("https://www.selenium.dev/selenium/web/blank.html");
- // Add cookie into current browser context
- driver.manage().addCookie(new Cookie("key", "value"));
- driver.quit();
- }
- @Test
- public void getNamedCookie() {
-
- driver.get("https://www.selenium.dev/selenium/web/blank.html");
- // Add cookie into current browser context
- driver.manage().addCookie(new Cookie("foo", "bar"));
- // Get cookie details with named cookie 'foo'
- Cookie cookie = driver.manage().getCookieNamed("foo");
- Assertions.assertEquals(cookie.getValue(), "bar");
-
- driver.quit();
- }
-
-
- @Test
- public void getAllCookies() {
-
- driver.get("https://www.selenium.dev/selenium/web/blank.html");
- // Add cookies into current browser context
- driver.manage().addCookie(new Cookie("test1", "cookie1"));
- driver.manage().addCookie(new Cookie("test2", "cookie2"));
- // Get cookies
- Set cookies = driver.manage().getCookies();
- for (Cookie cookie : cookies) {
- if (cookie.getName().equals("test1")) {
- Assertions.assertEquals(cookie.getValue(), "cookie1");
- }
-
- if (cookie.getName().equals("test2")) {
- Assertions.assertEquals(cookie.getValue(), "cookie2");
- }
- }
- driver.quit();
- }
-
-
- @Test
- public void deleteCookieNamed() {
-
- driver.get("https://www.selenium.dev/selenium/web/blank.html");
- driver.manage().addCookie(new Cookie("test1", "cookie1"));
- // delete cookie named
- driver.manage().deleteCookieNamed("test1");
- driver.quit();
- }
-
- @Test
- public void deleteCookieObject() {
-
- driver.get("https://www.selenium.dev/selenium/web/blank.html");
- Cookie cookie = new Cookie("test2", "cookie2");
- driver.manage().addCookie(cookie);
+ WebDriver driver = new ChromeDriver();
+
+ @AfterEach
+ final void closeBrowser() {
+ if (driver != null) {
+ driver.quit();
+ }
+ }
+
+ @Test
+ public void addCookie() {
+ driver.get("https://www.selenium.dev/selenium/web/blank.html");
+ // Add cookie into current browser context
+ driver.manage().addCookie(new Cookie("key", "value"));
+ }
+
+ @Test
+ public void getNamedCookie() {
+ driver.get("https://www.selenium.dev/selenium/web/blank.html");
+ // Add cookie into current browser context
+ driver.manage().addCookie(new Cookie("foo", "bar"));
+ // Get cookie details with named cookie 'foo'
+ Cookie cookie = driver.manage().getCookieNamed("foo");
+ Assertions.assertEquals(cookie.getValue(), "bar");
+ }
+
+
+ @Test
+ public void getAllCookies() {
+ driver.get("https://www.selenium.dev/selenium/web/blank.html");
+ // Add cookies into current browser context
+ driver.manage().addCookie(new Cookie("test1", "cookie1"));
+ driver.manage().addCookie(new Cookie("test2", "cookie2"));
+ // Get cookies
+ Set cookies = driver.manage().getCookies();
+ for (Cookie cookie : cookies) {
+ if (cookie.getName().equals("test1")) {
+ Assertions.assertEquals(cookie.getValue(), "cookie1");
+ }
+
+ if (cookie.getName().equals("test2")) {
+ Assertions.assertEquals(cookie.getValue(), "cookie2");
+ }
+ }
+ }
+
+
+ @Test
+ public void deleteCookieNamed() {
+ driver.get("https://www.selenium.dev/selenium/web/blank.html");
+ driver.manage().addCookie(new Cookie("test1", "cookie1"));
+ // delete cookie named
+ driver.manage().deleteCookieNamed("test1");
+ }
+
+ @Test
+ public void deleteCookieObject() {
+ driver.get("https://www.selenium.dev/selenium/web/blank.html");
+ Cookie cookie = new Cookie("test2", "cookie2");
+ driver.manage().addCookie(cookie);
/*
Selenium Java bindings also provides a way to delete
cookie by passing cookie object of current browsing context
*/
- driver.manage().deleteCookie(cookie);
-
- driver.quit();
- }
-
-
- @Test
- public void deleteAllCookies() {
-
- driver.get("https://www.selenium.dev/selenium/web/blank.html");
- // Add cookies into current browser context
- driver.manage().addCookie(new Cookie("test1", "cookie1"));
- driver.manage().addCookie(new Cookie("test2", "cookie2"));
- // Delete All cookies
- driver.manage().deleteAllCookies();
+ driver.manage().deleteCookie(cookie);
+ }
- driver.quit();
- }
- @Test
- public void sameSiteCookie() {
- driver.get("http://www.example.com");
+ @Test
+ public void deleteAllCookies() {
+ driver.get("https://www.selenium.dev/selenium/web/blank.html");
+ // Add cookies into current browser context
+ driver.manage().addCookie(new Cookie("test1", "cookie1"));
+ driver.manage().addCookie(new Cookie("test2", "cookie2"));
+ // Delete All cookies
+ driver.manage().deleteAllCookies();
+ }
- Cookie cookie = new Cookie.Builder("key", "value").sameSite("Strict").build();
- Cookie cookie1 = new Cookie.Builder("key", "value").sameSite("Lax").build();
+ @Test
+ public void sameSiteCookie() {
+ driver.get("http://www.example.com");
- driver.manage().addCookie(cookie);
- driver.manage().addCookie(cookie1);
+ Cookie cookie = new Cookie.Builder("key", "value").sameSite("Strict").build();
+ Cookie cookie1 = new Cookie.Builder("key", "value").sameSite("Lax").build();
- System.out.println(cookie.getSameSite());
- System.out.println(cookie1.getSameSite());
+ driver.manage().addCookie(cookie);
+ driver.manage().addCookie(cookie1);
- driver.quit();
- }
+ System.out.println(cookie.getSameSite());
+ System.out.println(cookie1.getSameSite());
+ }
}
diff --git a/examples/java/src/test/java/dev/selenium/interactions/InteractionsTest.java b/examples/java/src/test/java/dev/selenium/interactions/InteractionsTest.java
index 4d7b857fe304..3f53a64b9cea 100644
--- a/examples/java/src/test/java/dev/selenium/interactions/InteractionsTest.java
+++ b/examples/java/src/test/java/dev/selenium/interactions/InteractionsTest.java
@@ -3,30 +3,21 @@
import dev.selenium.BaseChromeTest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
-import org.openqa.selenium.Cookie;
-import java.util.Set;
public class InteractionsTest extends BaseChromeTest {
- @Test
- public void getTitle() {
- try {
- driver.get("https://www.selenium.dev/");
- // get title
- String title = driver.getTitle();
- Assertions.assertEquals(title, "Selenium");
- } finally {
- driver.quit();
+ @Test
+ public void getTitle() {
+ driver.get("https://www.selenium.dev/");
+ // get title
+ String title = driver.getTitle();
+ Assertions.assertEquals(title, "Selenium");
}
- }
- @Test
- public void getCurrentUrl() {
- try {
- driver.get("https://www.selenium.dev/");
- // get current url
- String url = driver.getCurrentUrl();
- Assertions.assertEquals(url, "https://www.selenium.dev/");
- } finally {
- driver.quit();
+
+ @Test
+ public void getCurrentUrl() {
+ driver.get("https://www.selenium.dev/");
+ // get current url
+ String url = driver.getCurrentUrl();
+ Assertions.assertEquals(url, "https://www.selenium.dev/");
}
- }
}
\ No newline at end of file
diff --git a/examples/java/src/test/java/dev/selenium/interactions/PrintsPageTest.java b/examples/java/src/test/java/dev/selenium/interactions/PrintsPageTest.java
index b6b6dae776f3..36130ff0ee03 100644
--- a/examples/java/src/test/java/dev/selenium/interactions/PrintsPageTest.java
+++ b/examples/java/src/test/java/dev/selenium/interactions/PrintsPageTest.java
@@ -5,7 +5,6 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
-import org.openqa.selenium.print.PageMargin;
import org.openqa.selenium.print.PrintOptions;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.chrome.ChromeDriver;