Java HTMLUnit 测试导航按钮

标签 java selenium htmlunit ui-testing

我对 Selenium HTMLUnit 还很陌生,因此我正在寻求一些帮助来为我的 Spring Boot 应用程序中的导航按钮创建基本测试。

我正在尝试整合一些基本测试,以确保我的网络应用程序中的导航按钮按预期工作。我的方法是通过 Id 找到所需的导航按钮,单击它,然后检查当前 URL 是否是我期望进入的新页面。

...
private HtmlUnitDriver driver = new HtmlUnitDriver(true);
...

@Test
public void navigationTest() {
    driver.get(BASE_URL);

    WebElement button = driver.findElement(By.id("navigation_button_id"));
    button.click();

    String currentUrl = driver.getCurrentUrl();

    Assert.assertThat(currentUrl, is(BASE_URL + "some_other_page"));
    driver.close();
}

我尝试使用 .click() 方法(如上所示),我还尝试使用 Actions 对象而不是更简单的 .click() 方法(见下文)来执行导航,但这仍然没有工作。

Actions actions = new Actions(driver);
actions.click(button).build().perform();

目前的行为是 URL 没有从 BASE_URL 更改(例如 http://localhost:8080 ),我已经验证它可以手动工作(亲自单击),但我无法让测试单击按钮并告诉我 URL 已更改(表明用户已被带到新页面,例如 http://localhost:8080/some_other_page )。

任何人都可以提供一些建议来使其正常工作吗?我只需要在 HTMLUnit 中测试基本导航的最简单方法。

最佳答案

我建议您使用以下代码来导航目的:

继续前进:

driver.naviagte().forward();  

向后:

driver.navigate().back();  

为了解决您的问题,当您前进/后退时:使用以下代码等待某些元素:

WebDriver wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated("some element locator"));  

然后使用driver.getCurrentUrl();代码获取currentUrl。

希望这能帮助您解决问题。
如果您对此有任何疑虑,请告诉我。

关于Java HTMLUnit 测试导航按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49832561/

相关文章:

java - 在 Android Wear OS(即 CSV)上保存和传输智能 watch 传感器数据的最佳方式是什么?

python - Selenium 中的 Instagram XPath 不起作用? (Python)

vba - 尝试使用 Selenium VBA 自动化 Chrome,自动化错误?

java - Selenium 网络驱动程序 : How to get the dynamic id using xpath?

java - HTMLUNIT getformbyname 网站中没有指定表单名称

java - 如何使用 xml 文件对我的 HtmlUnit 代码进行单元测试

java - 自首次启动以来的时间

java - SQlite WHERE 语句不起作用?

java - com/mysql/jdbc/Driver : Unsupported major. 次要版本 52.0

java - 使用 html 单元提交表单