无法使用 Testcontainers 中的 Chrome 驱动程序使用 Selenium 打开任何 URL

Unable to open any URLs with Selenium using Chrome driver in Testcontainers

我正在尝试在 Testcontainers 内的 JUnit 测试中使用 Selenium,使用 IntelliJ IDE 进行开发,在项目上设置 UI 测试框架。我正在使用 OpenJDK 12.0.1

我有我能想到的最基本的测试,但是在尝试访问任何网站(维基百科、google 等)时,我总是遇到空指针异常

我是不是漏掉了一些重要的东西?

这是我设置的测试:

public class SimpleTest {

 @Rule
 public BrowserWebDriverContainer chrome = new BrowserWebDriverContainer()
  .withCapabilities(new ChromeOptions());

 @Test
 public void simplePlainSeleniumTest() {
  RemoteWebDriver driver = chrome.getWebDriver();

  driver.get("https://google.com");

  assertTrue("This should always pass", true);
 }

}

在我的 gradle 文件中,我正在导入以下内容:

compile group: 'org.seleniumhq.selenium', name: 'selenium-java', version: '3.141.59'
compile group: 'org.seleniumhq.selenium', name: 'selenium-remote-driver', version: '3.141.59'
testCompile group: 'org.testcontainers', name: 'selenium', version: '1.11.3'
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.2.0'
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.2.0'
test {
    useJUnitPlatform()
}

我的 testcontainers.properties 文件中没有特殊设置

如果我能理解我看到的所有例子,这应该是:

  1. 通过 testcontainers 在 docker 容器中打开测试。
  2. 正在为该容器内的 Chrome 创建驱动程序。
  3. 导航到给定的网站(在上面的示例中,google.com)
  4. 通过,因为 true = true

但是无论我如何更改代码,我 运行 都会遇到以下错误:

selenium.SimpleTest > simplePlainSeleniumTest() FAILED
    java.lang.NullPointerException at SimpleTest.java:34

第 34 行是:driver.get("https://google.com");

您正在使用不支持规则的 JUnit Jupiter。 Testcontainers 中有一个单独的 Jupiter 支持,请参见以下页面: https://www.testcontainers.org/test_framework_integration/junit_5/

基本上,您需要添加 org.testcontainers:junit-jupiter:1.11.3 依赖项,将测试 class 注释为 @Testcontainers 并将 @Rule 替换为 @Container