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 测试导航按钮的主要内容,如果未能解决你的问题,请参考以下文章