Java HTMLUnit 测试导航按钮

Posted

技术标签:

【中文标题】Java HTMLUnit 测试导航按钮【英文标题】:Java HTMLUnit Testing Navigation Buttons 【发布时间】:2018-04-14 14:33:59 【问题描述】:

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

我正在尝试进行一些基本测试,以确保我的 web 应用程序中的导航按钮按预期工作。我的方法是通过 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 中工作。

【问题讨论】:

【参考方案1】:

我建议您将以下代码用于导航目的:

前进

driver.naviagte().forward();  

后退

driver.navigate().back();  

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

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

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

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

【讨论】:

使用 driver.navigate.forward(); - 如果您知道我的意思,您肯定必须先“落后”吗?不幸的是,“WebDriverWait”解决方案也不起作用,它仍然停留在原始页面上,不断达到超时(在您的示例中为 10 秒)。你有一个我可以玩的工作示例吗? 你能分享上面的工作代码示例吗? 让我带步再来? 1.您在第1页,想点击一个按钮,将您重定向到新页面,比如说第2页,您想要第2页的源代码【参考方案2】:

我记得这样做的方式是等待/断言新页面加载。如果您不能这样做,请在 getCurrentUrl() 之前等待几秒钟

【讨论】:

以上是关于Java HTMLUnit 测试导航按钮的主要内容,如果未能解决你的问题,请参考以下文章

Java 和 HTMLUnit:如何点击提交按钮?

Java和HTMLUnit:如何点击提交按钮?

html页面工具-htmlUnit

使用 htmlunit -Java 访问 Javascript 生成的 html

零基础快速入门mini爬虫框架HtmlUnit

硒与 HtmlUnit? [关闭]