【问题标题】:Java HTMLUnit Testing Navigation ButtonsJava HTMLUnit 测试导航按钮
【发布时间】: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 中工作。

【问题讨论】:

    标签: java selenium htmlunit ui-testing


    【解决方案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() 之前等待几秒钟

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 2014-06-24
      • 1970-01-01
      • 2019-05-20
      • 2013-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多