2 回答
TA贡献1785条经验 获得超8个赞
您不能编写接受 WebElement 作为参数的方法,并检查它是否在所有情况下都存在。这是因为您可以引用不存在的 WebElement 对象的唯一情况是它以前存在,然后从 DOM 中删除(“陈旧元素”)。为了第一次确定元素是否存在,您只能通过接受 By 参数而不是 WebElement 来做到这一点。这样您就可以使用 findElements 并检查 count > 0。
TA贡献1802条经验 获得超4个赞
根据WebElement 接口的文档,其所有方法调用
将进行新鲜度检查以确保元素引用仍然有效。这实质上决定了该元素是否仍然附加到 DOM。如果此测试失败,则会抛出 StaleElementReferenceException,并且以后对该实例的所有调用都将失败。
由于您收到的 webElement 没有任何验证,请考虑执行中性方法调用(没有任何副作用)来检查元素是否为StaleElementReferenceException
. 例如,您可以调用getSize()
方法。你的方法逻辑应该看起来像这样。
public static void verifyElementPresentStatus(WebElement targetElement, String elementName) {
Boolean elementPresent = true;
try {
elementPresent = targetElement.getSize();
} catch (StaleElementReferenceException e) {
elementPresent = false;
}
StepLogger.subVerification(elementName + " should be present");
Assert.assertTrue(elementPresent, ValidationHelper.getPresentValidation(elementName));
}
添加回答
举报