Невозможно открыть любые URL-адреса с помощью Selenium с помощью драйвера Chrome в Testcontainers - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь настроить среду тестирования пользовательского интерфейса в проекте, используя Selenium в тестах JUnit внутри Testcontainers, используя IntelliJ IDE для разработки. Я использую OpenJDK 12.0.1

У меня есть самый простой тест, о котором я могу подумать, но я продолжаю получать исключения Null Pointer, когда пытаюсь получить ЛЮБОЙ веб-сайт (википедия, 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. Открытие теста внутри док-контейнера через тест-контейнеры.
  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");

1 Ответ

0 голосов
/ 15 июня 2019

Вы используете JUnit Jupiter, который не поддерживает правила. В тестконтейнерах есть отдельная поддержка Jupiter, см. Следующую страницу: https://www.testcontainers.org/test_framework_integration/junit_5/

Как правило, вам нужно добавить org.testcontainers:junit-jupiter:1.11.3 зависимость, аннотировать ваш тестовый класс с @Testcontainers и заменить @Rule на @Container.

...