【问题标题】:Selenium failed result to equal a passed testSelenium 未能通过测试
【发布时间】:2018-01-05 08:18:23
【问题描述】:

我正在创建测试用例以确认某些字段是必需的。提交我的表单后,如果未填写所有必填字段,则不应显示“成功”横幅。所以这是我的代码 sn-p 来查看横幅是否显示在页面上...

checkRequestConfirm = webDriver.FindElement(By.ClassName("apx-success-message")).Displayed;

这显然没有通过测试,因为横幅不存在。但这就是我想要的。我希望这通过,因为横幅没有显示。任何建议都非常感谢!我知道我可能会错误地处理这个问题并且愿意改进。

【问题讨论】:

    标签: selenium


    【解决方案1】:

    如果您要检查横幅是否存在,我会等到加载其他元素(只是为了确保在横幅显示之前没有运行测试),然后使用:

    checkRequestConfirm = webDriver.findElements(By.ClassName("apx-success-message")).size() == 0
    

    如果你想检查它是否可见,只需使用:

    checkRequestConfirm = !webDriver.FindElement(By.ClassName("apx-success-message")).isDisplayed()
    

    您可以进一步了解here 方法之间的区别。

    【讨论】:

    • isDisplayed() 方法不适合我。这是硒的延伸吗?
    【解决方案2】:

    这取决于您使用的框架。您没有指定语言,但我猜是 C#?对于 C#,有 NUnit,或者如果您使用 Java,则有 JUnit、TestNG 等。所有这些框架(和其他框架)都具有在布尔值为 false 时通过测试的概念。

    对于 NUnit,语法类似于

    Assert.False(webDriver.FindElement(By.ClassName("apx-success-message")).Displayed, "Success message is NOT present");
    

    在此处了解更多信息:https://github.com/nunit/docs/wiki/Assert.False

    如果您不使用框架,我强烈建议您为您使用的语言找到一个。

    【讨论】:

      猜你喜欢
      • 2021-10-22
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多