diff --git a/java/src/org/openqa/selenium/remote/RemoteWebDriver.java b/java/src/org/openqa/selenium/remote/RemoteWebDriver.java index deca89f60595d..6b03ccd578c56 100644 --- a/java/src/org/openqa/selenium/remote/RemoteWebDriver.java +++ b/java/src/org/openqa/selenium/remote/RemoteWebDriver.java @@ -868,6 +868,17 @@ public String toString() { getClass().getSimpleName(), caps.getBrowserName(), platformName, getSessionId()); } + /** + * Returns the browser version from the capabilities. + * Compatible with Java 11 and Selenium 4. + * + * @return The browser version as a String, or empty string if not available. + */ + public String getBrowserVersion() { + Object version = getCapabilities().getCapability("browserVersion"); + return version != null ? version.toString() : ""; + } + public enum When { BEFORE, AFTER, diff --git a/java/test/org/openqa/selenium/remote/RemoteWebDriverUnitTest.java b/java/test/org/openqa/selenium/remote/RemoteWebDriverUnitTest.java index baf7143b165f3..62feec2557d4b 100644 --- a/java/test/org/openqa/selenium/remote/RemoteWebDriverUnitTest.java +++ b/java/test/org/openqa/selenium/remote/RemoteWebDriverUnitTest.java @@ -825,4 +825,22 @@ void getDownloadableFilesReturnsType() { fixture.verifyCommands(new CommandPayload(DriverCommand.GET_DOWNLOADABLE_FILES, emptyMap())); } + + /** + * Tests that getBrowserVersion() returns the correct version from capabilities. + * Ensures compatibility and correct extraction of browser version. + */ + @Test + void canGetBrowserVersionFromCapabilities() { + // Arrange: create capabilities with browserVersion + String expectedVersion = "123.45.67"; + ImmutableCapabilities capabilities = new ImmutableCapabilities("browserVersion", expectedVersion); + WebDriverFixture fixture = new WebDriverFixture(capabilities, WebDriverFixture.validSessionResponder); + + // Act: get browser version + String actualVersion = ((RemoteWebDriver) fixture.driver).getBrowserVersion(); + + // Assert: verify the version matches + assertThat(actualVersion).isEqualTo(expectedVersion); + } } diff --git a/java/test/org/openqa/selenium/remote/ShowBrowserVersionIntegrationTest.java b/java/test/org/openqa/selenium/remote/ShowBrowserVersionIntegrationTest.java new file mode 100644 index 0000000000000..18d037dcbfbb2 --- /dev/null +++ b/java/test/org/openqa/selenium/remote/ShowBrowserVersionIntegrationTest.java @@ -0,0 +1,24 @@ +package org.openqa.selenium.remote; + +import org.junit.jupiter.api.Test; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.chrome.ChromeDriver; +import org.openqa.selenium.Capabilities; +import static org.assertj.core.api.Assertions.assertThat; + +public class ShowBrowserVersionIntegrationTest { + @Test + void showBrowserVersion() { + // Start a real Chrome session + WebDriver driver = new ChromeDriver(); + try { + Capabilities caps = ((ChromeDriver) driver).getCapabilities(); + String version = caps.getBrowserVersion(); + System.out.println("Browser version: " + version); + assertThat(version).isNotEmpty(); + assertThat(version).isNotNull(); + } finally { + driver.quit(); + } + } +} diff --git a/java/test/org/openqa/selenium/remote/WebDriverFixture.java b/java/test/org/openqa/selenium/remote/WebDriverFixture.java index 0bf3c4721b088..216b7b5ebfa38 100644 --- a/java/test/org/openqa/selenium/remote/WebDriverFixture.java +++ b/java/test/org/openqa/selenium/remote/WebDriverFixture.java @@ -189,4 +189,17 @@ public static Function errorResponder(String state, Object va response.setSessionId(UUID.randomUUID().toString()); return response; }; + + public static final Function validSessionResponder = cmd -> { + if (DriverCommand.NEW_SESSION.equals(cmd.getName())) { + Response response = new Response(); + response.setState("success"); + response.setSessionId("mock-session-id"); + // Capabilities con browserVersion + response.setValue(Map.of("browserVersion", "123.45.67")); + return response; + } + // Para otros comandos, devolver null o como se requiera + return null; + }; }