检查类中是否存在 ng-hide



我有一个UI元素,它是一个错误消息,当错误消息未显示时将显示以下内容:

<section id="errorPanel" class="alert alert-danger alert-top ng-hide" data-ng-show="validationData.serverError">
Unknown server error occurred. Please try again.
</section>

当显示错误消息时,就像这样:

<section id="errorPanel" class="alert alert-danger alert-top" data-ng-show="validationData.serverError" style="">
Unknown server error occurred. Please try again.
</section>

因此,当消息未显示时,该类包含ng-hide

我的页面对象在顶部包含我的定位器,因此我通过以下方式定位此元素:

private By updateContactDetailsErrorMessage = By.id("errorPanel");

然后是一个布尔返回方法,该方法通过使用size>0然后返回truefalse来查看此 ID 是否存在。问题是这个元素似乎总是返回true即使它被隐藏了。我想我需要以不同的方式定位。也许寻找ng-hide是否存在?

我的退货方法如下:

public boolean getUpdateContactDetailsErrorMessage() throws InterruptedException {
Boolean errorPresent = driver.findElements(updateContactDetailsErrorMessage).size()>0;
return errorPresent;
}

如果元素存在于 DOM 中,driver会找到它,它不必可见。这就是为什么元素始终被定位并且列表不为空的原因。

您可以使用findElement找到元素(单个元素(,并使用getAttribute()来确定该元素是否具有ng-hide

public boolean getUpdateContactDetailsErrorMessage() throws InterruptedException {
WebElement element = driver.findElement(updateContactDetailsErrorMessage);
return element.getAttribute("class").contains("ng-hide");
}

如果显示错误消息,在这种情况下,元素的高度将大于 0。添加验证以获取元素的高度。 法典:

private By updateContactDetailsErrorMessage = By.id("errorPanel");
public boolean getUpdateContactDetailsErrorMessage() throws InterruptedException {
Boolean errorPresent = driver.findElement(updateContactDetailsErrorMessage).size().height>0;
return errorPresent;
}

最新更新