【问题标题】:How to assert that a page contains one of two possible texts (so an either-or assertion)?如何断言一个页面包含两个可能的文本之一(所以一个非此即彼的断言)?
【发布时间】:2019-01-04 19:28:13
【问题描述】:

我正在尝试验证页面是否包含两种可能的文本之一。我知道如何断言正文包含某些信息,但我不知道如何在断言中加入非此即彼的构造。谁能帮帮我?

您可以在下面看到我用来断言页面包含特定文本的一般代码。 如果有人能告诉我如何断言该页面包含“Text1”或“Text2”,那将是一个巨大的帮助。

IWebElement body = driver.FindElement(By.TagName("body"));
Assert.IsTrue(body.Text.Contains("TEXT"));

提前致谢!

【问题讨论】:

    标签: c# .net selenium selenium-webdriver


    【解决方案1】:

    您的帖子并不完全清楚,因为您要的是either-or,但也需要and。我猜你的意思是“我怎样才能检查页面只包含两个文本之一:当它包含 Text1 时它不应该包含 Text2”。

    仅仅使用binary OR Operator 不会让你到达那里,因为true | true 等于true

    XOR Operator 进来了。

    对于bool 操作数,^ 计算其操作数的逻辑异或;也就是说,结果是true 当且仅当它的操作数之一是true

    试试这样的:

    Assert.IsTrue(body.Text.Contains("TEXT1") ^ body.Text.Contains("TEXT2"));
    

    【讨论】:

      【解决方案2】:

      您可以执行所需的检查并将每个结果存储在一个变量中,然后对变量执行断言。

      var text1Exists = body.Text.Contains("TEXT1");
      var text2Exists = body.Text.Contains("TEXT2");
      Assert.IsTrue(text1Exists && text2Exists);
      

      【讨论】:

        猜你喜欢
        • 2017-04-30
        • 2014-10-21
        • 2013-11-01
        • 2017-12-29
        • 1970-01-01
        • 2022-09-28
        • 1970-01-01
        • 2016-06-30
        • 1970-01-01
        相关资源
        最近更新 更多