好的。要么这实际上很奇怪,要么我缺少一些基本的东西。我有一些代码试图断言 WebElements 列表不存在。如果我使用 assert 和 < 1 作为列表大小,它可以工作。但我首选的断言方法是 assertThat .isLessThan,它在完全相同的情况下不起作用。
编码:
@FindBy(css = "[data-e2e-selector=soknad-boks-selector]")
private List<WebElement> soknadbokser;
public void forventIngenSoknaderPaMinArbeidsflate() {
waitForelementNotVisible();
//assertThat(soknadbokser.size()).isLessThan(1); // DOES NOT WORK
assert(soknadbokser.size()<1); // WORKS
}
private void waitForelementNotVisible() {
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("[data-e2e-selector=soknad-boks]")));
}
当使用上面的 assertThat 时,我得到了非预期的断言错误:
java.lang.AssertionError:
Expecting:
<1>
to be less than:
<1>
怎么会这样?
值得一提的是,在系统从 Angular6 升级到最新版本之前,assertThat() 在这段代码中已经使用了好几年。但这应该与 Java 的 assertThat() 声称 size() 为零是 1 没有任何关系?检查变量自然会发现 size() 确实为零,正如 assert < 1 所证明的那样。但显然不是根据 assertThat().isLessTHan()。