Selenium WebDriver - 屏幕上不存在Assert元素

时间:2017-12-12 14:48:14

标签: c# selenium selenium-webdriver

下午,

我已经搜索过但找不到我用硒问题的答案。我需要找到一种方法来确保元素不会显示在页面上。基本上,我们的用户具有不同级别的权限,这会导致显示不同的选项卡。

我们最近遇到了一些问题,并且为不应该看到它们的用户显示了错误的标签。现在断言元素存在根本不是问题,但是这不会确保不存在rouge选项卡。任何帮助都会受到赞赏,因为它证明是困难的,我确信这并不复杂。

我们正在使用Selenium WebDriver并在C#中编写测试。

谢谢,

斯图。

3 个答案:

答案 0 :(得分:2)

使用webdriver的findElements方法,如果WebElements列表返回大小为0,则可以断言元素的数量。

答案 1 :(得分:1)

ensure rouge tabs are not present,您可以使用以下任一 ExpectedConditions 条款:

ExpectedConditions.InvisibilityOfElementLocated 可用于检查元素是否在DOM上不可见或不存在。

如果未显示该元素,则

返回值 true ,否则 false

ExpectedConditions.InvisibilityOfElementWithText 可用于检查带有文字的元素是否在DOM上不可见或不存在。

如果未显示该元素,则

返回值 true ,否则 false

答案 2 :(得分:0)

Selenium没有内置任何东西,这有点令人讨厌,我总是处理它的方式是试图断言元素存在,并将其包装在try / catch中特别是对于不存在异常的元素,如果它抛出任何可能是真正问题的其他异常,它就会失败。在尝试中,如果找到元素,则需要添加一些内容来强制失败(任何类型的断言都会失败)。

确认页面标题未显示的示例(对不起它是用Java编写的,但之前我还没有在C#中工作。它应该很简单,可以在那里重新创建)

    try {
        final boolean displayed = this.pageHeader.isDisplayed();
        assertFalse("Page header should not be displayed", displayed);
    } catch (final NoSuchElementException nsee) {
        this.log.debug("Page header is not displayed :PASSED");
    }