Skip to content

Commit 77a3c37

Browse files
eddumelendezkiview
andauthored
Improve selenium module (#6204)
* Remove usage of `org.openqa.selenium.remote.BrowserType`, it was removed in 4.x * Upgrade to selenium 4.6.0 * Deprecate getWebDriver() Co-authored-by: Kevin Wittek <[email protected]>
1 parent 694ed19 commit 77a3c37

File tree

14 files changed

+44
-29
lines changed

14 files changed

+44
-29
lines changed

docs/examples/junit4/generic/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@ dependencies {
77
testImplementation project(":mysql")
88

99
testImplementation 'mysql:mysql-connector-java:8.0.31'
10-
testImplementation "org.seleniumhq.selenium:selenium-api:3.141.59"
10+
testImplementation "org.seleniumhq.selenium:selenium-api:4.6.0"
1111
testImplementation 'org.assertj:assertj-core:3.15.0'
1212
}

docs/examples/junit4/generic/src/test/java/generic/HostPortExposedTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,15 @@ public static void tearDown() throws Exception {
5050
}
5151

5252
@Rule
53-
public BrowserWebDriverContainer browser = new BrowserWebDriverContainer().withCapabilities(new ChromeOptions());
53+
public BrowserWebDriverContainer<?> browser = new BrowserWebDriverContainer<>()
54+
.withCapabilities(new ChromeOptions());
5455

5556
@Test
5657
public void testContainerRunningAgainstExposedHostPort() {
5758
// useHostExposedPort {
5859
final String rootUrl = String.format("http://host.testcontainers.internal:%d/", localServerPort);
5960

60-
final RemoteWebDriver webDriver = browser.getWebDriver();
61+
final RemoteWebDriver webDriver = new RemoteWebDriver(this.browser.getSeleniumAddress(), new ChromeOptions());
6162
webDriver.get(rootUrl);
6263
// }
6364

examples/cucumber/src/test/java/org/testcontainers/examples/Stepdefs.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import io.cucumber.java.en.Given;
77
import io.cucumber.java.en.Then;
88
import io.cucumber.java.en.When;
9+
import org.openqa.selenium.By;
910
import org.openqa.selenium.WebElement;
1011
import org.openqa.selenium.chrome.ChromeOptions;
1112
import org.openqa.selenium.remote.RemoteWebDriver;
@@ -59,9 +60,9 @@ public void locationIs(String location) throws Exception {
5960

6061
@When("^I ask is it possible to search here$")
6162
public void iAskIsItPossibleToSearchHere() throws Exception {
62-
RemoteWebDriver driver = container.getWebDriver();
63+
RemoteWebDriver driver = new RemoteWebDriver(container.getSeleniumAddress(), new ChromeOptions());
6364
driver.get(location);
64-
List<WebElement> searchInputs = driver.findElementsByTagName("input");
65+
List<WebElement> searchInputs = driver.findElements(By.tagName("input"));
6566
answer = searchInputs != null && searchInputs.size() > 0 ? "YES" : "NOPE";
6667
}
6768

examples/selenium-container/src/test/java/SeleniumContainerTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import java.io.File;
2222
import java.util.List;
23+
import java.util.concurrent.TimeUnit;
2324

2425
import static org.assertj.core.api.Assertions.assertThat;
2526

@@ -41,7 +42,8 @@ public class SeleniumContainerTest {
4142

4243
@Test
4344
public void simplePlainSeleniumTest() {
44-
RemoteWebDriver driver = chrome.getWebDriver();
45+
RemoteWebDriver driver = new RemoteWebDriver(chrome.getSeleniumAddress(), new ChromeOptions());
46+
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
4547

4648
driver.get("http://host.testcontainers.internal:" + port + "/foo.html");
4749
List<WebElement> hElement = driver.findElements(By.tagName("h"));

modules/selenium/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ description = "Testcontainers :: Selenium"
33
dependencies {
44
api project(':testcontainers')
55

6-
provided 'org.seleniumhq.selenium:selenium-remote-driver:3.141.59'
7-
provided 'org.seleniumhq.selenium:selenium-chrome-driver:3.141.59'
8-
testImplementation 'org.seleniumhq.selenium:selenium-firefox-driver:3.141.59'
9-
testImplementation 'org.seleniumhq.selenium:selenium-support:3.141.59'
6+
provided 'org.seleniumhq.selenium:selenium-remote-driver:4.6.0'
7+
provided 'org.seleniumhq.selenium:selenium-chrome-driver:4.6.0'
8+
testImplementation 'org.seleniumhq.selenium:selenium-firefox-driver:4.6.0'
9+
testImplementation 'org.seleniumhq.selenium:selenium-support:4.6.0'
1010

1111
testImplementation 'org.mortbay.jetty:jetty:6.1.26'
1212
testImplementation project(':nginx')

modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import org.jetbrains.annotations.Nullable;
1212
import org.openqa.selenium.Capabilities;
1313
import org.openqa.selenium.chrome.ChromeOptions;
14-
import org.openqa.selenium.remote.BrowserType;
1514
import org.openqa.selenium.remote.DesiredCapabilities;
1615
import org.openqa.selenium.remote.RemoteWebDriver;
1716
import org.rnorth.ducttape.timeouts.Timeouts;
@@ -312,7 +311,9 @@ protected void containerIsStarted(InspectContainerResponse containerInfo) {
312311
* class (if used as a @ClassRule)
313312
*
314313
* @return a new Remote Web Driver instance
314+
* @deprecated use {@link #getSeleniumAddress()} instead
315315
*/
316+
@Deprecated
316317
public synchronized RemoteWebDriver getWebDriver() {
317318
if (driver == null) {
318319
if (capabilities == null) {
@@ -437,4 +438,11 @@ public enum VncRecordingMode {
437438
RECORD_ALL,
438439
RECORD_FAILING,
439440
}
441+
442+
private static class BrowserType {
443+
444+
private static final String CHROME = "chrome";
445+
446+
private static final String FIREFOX = "firefox";
447+
}
440448
}

modules/selenium/src/test/java/org/testcontainers/junit/BaseWebDriverContainerTest.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
import org.junit.ClassRule;
44
import org.openqa.selenium.By;
5+
import org.openqa.selenium.Capabilities;
56
import org.openqa.selenium.WebElement;
7+
import org.openqa.selenium.chrome.ChromeOptions;
8+
import org.openqa.selenium.firefox.FirefoxOptions;
69
import org.openqa.selenium.remote.RemoteWebDriver;
710
import org.testcontainers.containers.BrowserWebDriverContainer;
811
import org.testcontainers.containers.GenericContainer;
@@ -31,8 +34,9 @@ public class BaseWebDriverContainerTest {
3134
.withExposedPorts(8080, 8081)
3235
.waitingFor(new HttpWaitStrategy());
3336

34-
protected static void doSimpleExplore(BrowserWebDriverContainer<?> rule) {
35-
RemoteWebDriver driver = setupDriverFromRule(rule);
37+
protected static void doSimpleExplore(BrowserWebDriverContainer<?> rule, Capabilities capabilities) {
38+
RemoteWebDriver driver = new RemoteWebDriver(rule.getSeleniumAddress(), capabilities);
39+
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
3640
System.out.println("Selenium remote URL is: " + rule.getSeleniumAddress());
3741
System.out.println("VNC URL is: " + rule.getVncAddress());
3842

@@ -42,17 +46,15 @@ protected static void doSimpleExplore(BrowserWebDriverContainer<?> rule) {
4246
assertThat(title.getText().trim())
4347
.as("the index page contains the title 'Hello world'")
4448
.isEqualTo("Hello world");
49+
driver.quit();
4550
}
4651

4752
protected void assertBrowserNameIs(BrowserWebDriverContainer<?> rule, String expectedName) {
48-
RemoteWebDriver driver = setupDriverFromRule(rule);
53+
Capabilities capabilities = ("chrome".equals(expectedName)) ? new ChromeOptions() : new FirefoxOptions();
54+
RemoteWebDriver driver = new RemoteWebDriver(rule.getSeleniumAddress(), capabilities);
55+
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
4956
String actual = driver.getCapabilities().getBrowserName();
5057
assertThat(actual).as(String.format("actual browser name is %s", actual)).isEqualTo(expectedName);
51-
}
52-
53-
private static RemoteWebDriver setupDriverFromRule(BrowserWebDriverContainer<?> rule) {
54-
RemoteWebDriver driver = rule.getWebDriver();
55-
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
56-
return driver;
58+
driver.quit();
5759
}
5860
}

modules/selenium/src/test/java/org/testcontainers/junit/ChromeRecordingWebDriverContainerTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ private File[] runSimpleExploreInContainer(BrowserWebDriverContainer<?> containe
6464
container.start();
6565

6666
TimeUnit.MILLISECONDS.sleep(MINIMUM_VIDEO_DURATION_MILLISECONDS);
67-
doSimpleExplore(container);
67+
doSimpleExplore(container, new ChromeOptions());
6868
container.afterTest(
6969
new TestDescription() {
7070
@Override
@@ -178,7 +178,7 @@ public void recordingTestThatShouldBeRecordedButNotPersisted() {
178178
) {
179179
chrome.start();
180180

181-
doSimpleExplore(chrome);
181+
doSimpleExplore(chrome, new ChromeOptions());
182182
}
183183
}
184184

@@ -198,7 +198,7 @@ public void recordingTestThatShouldBeRecordedAndRetained() throws InterruptedExc
198198
chrome.start();
199199

200200
TimeUnit.MILLISECONDS.sleep(MINIMUM_VIDEO_DURATION_MILLISECONDS);
201-
doSimpleExplore(chrome);
201+
doSimpleExplore(chrome, new ChromeOptions());
202202
chrome.afterTest(
203203
new TestDescription() {
204204
@Override

modules/selenium/src/test/java/org/testcontainers/junit/ChromeWebDriverContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ public void checkBrowserIsIndeedChrome() {
2525

2626
@Test
2727
public void simpleExploreTest() {
28-
doSimpleExplore(chrome);
28+
doSimpleExplore(chrome, new ChromeOptions());
2929
}
3030
}

modules/selenium/src/test/java/org/testcontainers/junit/ContainerWithoutCapabilitiesTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.junit.Rule;
44
import org.junit.Test;
5+
import org.openqa.selenium.chrome.ChromeOptions;
56
import org.testcontainers.containers.BrowserWebDriverContainer;
67

78
public class ContainerWithoutCapabilitiesTest extends BaseWebDriverContainerTest {
@@ -16,6 +17,6 @@ public void chromeIsStartedIfNoCapabilitiesProvided() {
1617

1718
@Test
1819
public void simpleExploreTestWhenNoCapabilitiesProvided() {
19-
doSimpleExplore(chrome);
20+
doSimpleExplore(chrome, new ChromeOptions());
2021
}
2122
}

0 commit comments

Comments
 (0)