htmlunit 单个测试通过但在测试套件中运行失败

问题描述

我正在使用 HtmlUnit 来测试一些 SAML SSO 流程。我编写了多个测试,它们在单独运行时工作正常。当我在测试套件中运行它们或运行所有测试时。只有 1 工作正常,其他失败。问题似乎是,一旦使用 webclient.getPage('url') 请求第一页并单击按钮以重定向下一页。点击不会发生。当单独运行测试时,它点击正常并且工作正常。

我正在使用 htmlunit 2.46.0 版,如下所示,测试之间共享的唯一静态数据是 URLS 和用户名和密码:

private static final String USERNAME = "username";

    private static final String PASSWORD = "password";


public void test1() throws Exception {
try (final WebClient webClient = new WebClient(browserVersion.CHROME)) {
            webClient.getoptions().setThrowExceptionOnScriptError(false);
            webClient.getoptions().setThrowExceptionOnFailingStatusCode(false);
            webClient.getoptions().setJavaScriptEnabled(true);
            webClient.getoptions().setCssEnabled(false);
            webClient.getoptions().setRedirectEnabled(true);
            webClient.getCookieManager().setCookiesEnabled(true);

            final HtmlPage loginPage= webClient.getPage(URL);
            assertthat(loginPage.getTitleText()).isEqualTo(LOGIN_PAGE_TITLE);

            HtmlButtonInput samlLoginButton = loginPage.getHtmlElementById("test");

            samlLoginButton.click();
            webClient.waitForBackgroundJavaScriptStartingBefore(10000);
            webClient.waitForBackgroundJavaScript(60000);

            HtmlPage nextLoginPage = (HtmlPage) webClient.getCurrentwindow().getEnclosedPage();
            
            assertthat(nextLoginPage.getUrl().toString()).isEqualTo(NEXT_LOGIN_URL);
}
}

public void test2() throws Exception {
//similar to above example
}

当我在 java 中使用 try with resources 时,最后调用webclient.close()

还有什么我需要做的吗?

我还尝试在 Junit 中设置 @BeforeEach@AfterEach 以设置 webclientclose。但结果是一样的。

如何在测试套件中激发与运行单个测试相同的行为?

感谢阅读。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...