如何检查和确认Web元素在网页中不可用?

时间:2016-06-25 17:54:32

标签: java selenium selenium-webdriver

我有一个操作按钮,此操作按钮将根据输入条件给出2个结果中的任何一个。如果提供了无效数据,那么将在消息表中抛出一些验证错误,如果提供了有效数据,则消息表将不存在,它将打开另一个部分,即仅显示无效数据输入的消息表,它不会显示有效数据。

代码:

 driver.findElement(By.name("MessageTable")).isDisplayed()

如果输入了有效数据,则不会显示消息表部分,因此会出现错误

"no such element: Unable to locate element: 
{"method":"name","selector":"MessageTable"}". for the above code.

如何确认网页中不存在消息表?

3 个答案:

答案 0 :(得分:1)

AFAIK,在Webdriver API中,直接方法用于验证页面中是否存在元素。

现在,在您的情况下,您正在发送有效数据,您需要验证页面上是否不再存在验证消息。但是为此您使用的是findElement()方法,显然无法在页面中找到该元素,并且当元素不存在时它会抛出预期的异常。

<强> 解决方案: -

您可以编写自定义方法来捕获此异常并根据您的测试返回布尔值。

public boolean isValidationMsgNotExist() {
    try {
        driver.findElement(By.name("MessageTable"));
        return false;
    } catch (NoSuchElementException e) {
        return true;
    }
}

您可以修改上述方法以接收WebElement作为参数并验证它是否存在。

答案 1 :(得分:1)

我通常这样做。

List<WebElement> messageTable = driver.findElements(By.name("MessageTable"));
if (messageTable.isEmpty())
{
    // the message table was NOT found
    // do stuff
}

答案 2 :(得分:0)

或者您可以尝试driver.findElements(Locator).size()。如果size为1,则找到元素,依此类推。