【问题标题】:Unable to open any URLs with Selenium using Chrome driver in Testcontainers无法在 Testcontainers 中使用 Chrome 驱动程序使用 Selenium 打开任何 URL
【发布时间】:2019-10-28 16:18:58
【问题描述】:

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

我有我能想到的最基本的测试,但在尝试获取任何网站(维基百科、谷歌等)时,我不断收到空指针异常

我在这里遗漏了什么重要的东西吗?

这是我设置的测试:

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");

【问题讨论】:

标签: java selenium junit testcontainers


【解决方案1】:

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

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

【讨论】:

  • 这就是它!非常感谢。
猜你喜欢
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 2014-04-03
  • 2017-05-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 1970-01-01
相关资源
最近更新 更多