【问题标题】:Selenium WebDriver - Assert element not present on screenSelenium WebDriver - 屏幕上不存在断言元素
【发布时间】:2017-12-12 14:48:14
【问题描述】:

下午,

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

我们最近遇到了一些问题,并且为不应看到它们的用户显示了错误的标签。现在断言元素存在根本没有问题,但这不会确保不存在胭脂标签。任何帮助都将不胜感激,因为事实证明这很困难,而且我相信这并不复杂。

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

谢谢,

斯图。

【问题讨论】:

  • 尝试单击选项卡,如果成功则测试失败,如果代码捕获到 selenium 异常则继续。

标签: c# selenium selenium-webdriver


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    对于ensure rouge tabs are not present,您可以使用以下任一ExpectedConditions子句:

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

    返回值true如果元素不显示,否则false

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

    返回值true如果元素不显示,否则false

    【讨论】:

      【解决方案3】:

      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");
          }
      

      【讨论】:

      • 感谢 Jsmith2800。这是我最终使用的方法。我正在考虑使用 IsNull 但硒异常是问题所在。使用 Try Catch 方法已解决问题,先发帖,先修复。
      猜你喜欢
      • 2017-06-27
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 2011-03-18
      • 2020-03-26
      • 2017-08-06
      • 1970-01-01
      • 2023-04-08
      相关资源
      最近更新 更多