我有一个操作按钮,此操作按钮将根据输入条件给出2个结果中的任何一个。如果提供了无效数据,那么将在消息表中抛出一些验证错误,如果提供了有效数据,则消息表将不存在,它将打开另一个部分,即仅显示无效数据输入的消息表,它不会显示有效数据。
码:
driver.findElement(By.name("MessageTable")).isDisplayed()
如果输入了有效数据,则不会显示消息表部分,因此会出现错误
"no such element: Unable to locate element:
{"method":"name","selector":"MessageTable"}". for the above code.
我该如何确认网页中没有消息表?
AFAIK,在Webdriver API中,没有提供直接方法来验证页面中是否存在元素。
现在,在您的情况下,您正在发送有效数据,您需要验证页面上是否不再存在验证消息。但是为此您使用findElement()
方法,显然无法在页面中找到该元素,并且当元素不存在时它会抛出预期的异常。
解:-
您可以编写自定义方法来捕获此异常并根据您的测试返回布尔值。
public boolean isValidationMsgNotExist() {
try {
driver.findElement(By.name("MessageTable"));
return false;
} catch (NoSuchElementException e) {
return true;
}
}
您可以修改上述方法以接收WebElement
作为参数并验证它是否存在。
我通常这样做。
List<WebElement> messageTable = driver.findElements(By.name("MessageTable"));
if (messageTable.isEmpty())
{
// the message table was NOT found
// do stuff
}
或者您可以尝试driver.findElements(Locator).size()。如果size为1,则找到元素,依此类推。