带有硒测试容器的junit5无法正常工作
Posted
技术标签:
【中文标题】带有硒测试容器的junit5无法正常工作【英文标题】:junit5 with selenium testcontainer not working 【发布时间】:2021-11-20 15:36:53 【问题描述】:目标 - 我希望能够使用 Junit 5 和 testcontainers 编写 selenium 测试。我正在编写一个非常简单的代码,以便能够检查谷歌主页搜索栏的属性。
问题 - chrome.getWebDriver();返回空值。我错过了什么吗?
异常 - java.lang.NullPointerException:无法调用“org.openqa.selenium.WebDriver.manage()”,因为“驱动程序”为空。
这是因为我在初始化 WebDriver 后尝试设置隐式等待。
我的 pom.xml -
<properties>
<maven.compiler.source>16</maven.compiler.source>
<maven.compiler.target>16</maven.compiler.target>
<test-containers.version>1.16.0</test-containers.version>
<selenium.version>3.141.59</selenium.version>
<junit.version>5.8.1</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>$junit.version</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>$selenium.version</version>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>$test-containers.version</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>selenium</artifactId>
<version>$test-containers.version</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<version>$test-containers.version</version>
<scope>test</scope>
</dependency>
</dependencies>
我的测试课-
@TestInstance(Lifecycle.PER_CLASS)
@Testcontainers
public class GoogleTest
@Container
public BrowserWebDriverContainer<?> chrome = new BrowserWebDriverContainer<>()
.withCapabilities(Config.getChromeOptions());
private GooglePage googlePage;
@BeforeAll
public void setup() throws Exception
// ISSUE IS WITH THE LINE BELOW
WebDriver driver = chrome.getWebDriver();
driver.manage().timeouts().implicitlyWait(7, TimeUnit.SECONDS);
// trying to use page object model, just navigates to the google homepage
googlePage = new GooglePage(driver);
@Test
public void testTitle() throws Exception
WebElement element = googlePage.getSearchBar();
Thread.sleep(5000);
assertEquals(element.getAttribute("role"), "combobox");
In case you need it, the google drive link for the code
【问题讨论】:
缺少.withCapabilities(new ChromeOptions())
?
不,就像我在那里设置 headless=true 一样,所以为了简洁起见,我将其从 sn-p 中删除。不过谢谢
【参考方案1】:
弄错了,如果使用 junit5,fields should be private static final 我想...
我还在用public...
【讨论】:
以上是关于带有硒测试容器的junit5无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
使用 Micronaut 应用程序为 JUnit5 中的每个单元/集成测试运行一次 TestContainer
带有 @Suite 注释的 Junit5 测试套件不使用 mvn test 命令执行测试