0
Assert.assertFalse(driver.findElement(By.xpath("element's xpath")).isDisplayed(),
            "Bug!! The element is appeared");

当我使用上面的脚本运行我的代码时,我的脚本失败并出现“找不到元素,(在元素的 xpath 中提到)”这样的语句现在我必须做什么?我的想法是验证屏幕中不存在该元素

4

3 回答 3

0

我看到很久以前就有人问过这个问题,但是也许正在寻找类似问题的解决方案的人现在会发现它很有用。我有某种方法来处理此类问题,不确定这是否是一种好方法,但至少它是有意义的并且可以完成工作。

首先,我通常定义一个单独的方法来查找这些元素:

private static WebElement element = null; 

public static WebElement findYourElement(WebDriver driver) {
    try {
    element = driver.findElement(By.xpath("your_xpath_here"));
    }
    catch(NoSuchElementException e) {
        System.out.println(e.getMessage());
        element = null;
        return element;
    }
    return element;
}

您可以在此处看到,如果抛出可能的 NoSuchElementException,它就会被捕获。在异常情况下,“元素”的值也设置为 null,因为在我的程序中可能有来自以前元素的值存储在这里,我们在这里没有任何其他不相关的元素。

接下来是断言:

Assert.assertFalse(findYourElement != null, "Bug!! The element is there!"

此处,如果 findYourElement 返回的元素不为空,则 assertFalse 方法将失败,从 element != null 比较产生 True 结果并使 assertFalse 失败,因为它期望具有 false 值才能继续。你也可以去:

Assert.assertTrue(findYourElement = null, "Bug!! The element is there!"

我认为这样的解决方案有助于使事情井井有条,但另一方面它可能在代码量方面更大并且也更复杂。这还取决于您对 Java 的掌握程度以及您是否愿意处理异常。我自己不是 Java 专家,因此对改进我当前解决方案的任何贡献都将不胜感激!

于 2014-11-29T17:30:06.770 回答
0

如果找不到匹配的元素,findElement 会抛出异常,因此您的测试将因 selenium 异常而失败,而不是 JUnit。

您可以使用findElements(不会引发异常)并检查返回的列表长度是否等于 0

请参阅Selenium 文档中的详细信息

于 2013-09-23T14:25:32.333 回答
0

做这个小改动,绝对有效

Assert.assertTrue(driver.findElements(By.xpath("element's xpath")).size()<1;,
        "Bug!! The element is appeared");
于 2018-04-16T10:11:26.313 回答