我正在使用 JUnitSoftAssertions,到目前为止我很喜欢它。但有时,点击号召性用语按钮的时间比下一个断言的时间长,因此会导致测试失败。
例如:
@Rule
public final JUnitSoftAssertions softly = new JUnitSoftAssertions();
@And("he should be on {page} page")
public void gotoPage(String page) {
// current page is A, click to go to page B
toPageBButton.click();
softly.assertThat(driver.getCurrentUrl()).as("Page B").isEqualTo(page);
softly.assertAll();
}
断言失败,因为
getCurrentUrl()
仍在页面 A 上。
如果我处于调试模式,那么它会通过,因为我有断点。
如果我断言页面 B 上的按钮显示在
isEqualTo(page)
之前,那么它也会通过,但奇怪的是我在断言当前 URL 之前断言按钮
有没有办法在点击动作和断言之前等待?我不想使用
Thread.sleep()
因为我使用
WebElementFacade
,所以我可以等到按钮不再可见,点击后:
toPageBButton.click();
element(toPageBButton).waitUntilNotVisible();