下午,
我已经搜索过但找不到我用硒问题的答案。我需要找到一种方法来确保元素不会显示在页面上。基本上,我们的用户具有不同级别的权限,这会导致显示不同的选项卡。
我们最近遇到了一些问题,并且为不应该看到它们的用户显示了错误的标签。现在断言元素存在根本不是问题,但是这不会确保不存在rouge选项卡。任何帮助都会受到赞赏,因为它证明是困难的,我确信这并不复杂。
我们正在使用Selenium WebDriver并在C#中编写测试。
谢谢,
斯图。
答案 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");
}