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

问题描述 投票:0回答:3

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

码:

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

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

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

我该如何确认网页中没有消息表?

java selenium selenium-webdriver
3个回答
1
投票

AFAIK,在Webdriver API中,没有提供直接方法来验证页面中是否存在元素。

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

解:-

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

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

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


1
投票

我通常这样做。

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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.