我对Selenium HTMLUnit还是很陌生,因此我正在寻找一些帮助,以帮助我在Spring Boot应用程序中为导航按钮创建基本测试。
我正在尝试进行一些基本测试,以确保Webapp中的导航按钮能够按预期工作。我的方法是按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。希望这可以帮助您解决问题。
如果您对此有任何疑问,请告诉我。