【问题标题】:Want a new line(\n) element in Assert.AreEqual()在 Assert.AreEqual() 中想要一个新的 line(\n) 元素
【发布时间】:2015-12-02 20:45:57
【问题描述】:

当我没有输入任何用户名和密码并点击登录时,我会收到消息:

用户名字段是必需的。

密码字段为必填项。

它们在 HTML 中处于无序列表中。

在我正在使用的代码中

Assert.AreEqual("The Username field is required.\nThe Password field is required.",
        loginPage.ValidationMsgText,
        "Error at Validaion message with no credentials");

但它总是无法通过测试用例。

我也试过

Assert.IsTrue(loginPage.ValidationMsgText
        .Contains("The Username field is required.The Password field is required."));

但它没有用。我是自动化新手,需要一些帮助。

我的 HTML:

<div class="validation-summary-errors" data-valmsg-summary="true">
    <ul>
        <li>The Username field is required.</li>
       <li>The Password field is required.</li>
    </ul>
</div>

有没有更好的办法?

【问题讨论】:

  • 为什么你在 Assert.AreEqual 中传递 3 个参数,它应该有 2 个参数,预期和实际。
  • @HelpingHands 第三个是失败时抛出的错误信息:msdn.microsoft.com/en-us/library/ms243446.aspx
  • @Slanec - 我明白了,我在用 java 检查。
  • @HelpingHands Java 也有这个可选消息,因为它非常有用。参见例如Assert.assertEquals().
  • loginPage.ValidationMsgText 的打印内容是什么?

标签: c# selenium selenium-webdriver


【解决方案1】:
Assert.IsTrue(
loginPage.ValidationMsgText.Contains("The Username field is required.") &&
loginPage.ValidationMsgText.Contains("The Password field is required.")
);

此外,在调试时,您可以验证 ValidationMsgText 的实际值并使用相应的字符。 (也许使用 Environment.NewLine 代替 /n 会更好)

【讨论】:

  • 我为此苦苦挣扎了很久。你的解决方案对我有用。谢谢。有没有办法在这种情况下使用 Assert.AreEqual() 。 @Pitroslav
  • 我很好奇您是如何从li 标签中获取和(可能)连接您的文本的。正如 Piotroslav 在他的回答中提到的,您需要检查 loginPage.ValidationMsgText 的实际值并据此采取行动。
  • Cosmin,这是我得到 2 个不同字符串的唯一场景。输出将是“需要的用户名字段。需要的密码字段”。它有 2 条不同的线路。使用 Assert.AreEqual(),这 2 个语句将位于同一行。我收到一个错误可能是因为间距,我找不到。所以我尝试使用 Assert.IsTrue()。如果你能用 assert.AreEqual() 告诉我,我真的很感激。
  • 这很容易。一旦您知道 loginPage.ValidationMsgText 的确切内容,您就可以将其存储为字符串并在 Assert.AreEqual(loginPage.ValidationMsgText, myString); 中使用它。但是你仍然需要知道这两个
  • 部分是如何合并到 ValidationMsgText
  • 中的
  • 公共字符串 ValidationMsgText { get { IWebElement validationMsgs = Drivers._driverInstance.FindElement(By.CssSelector(".validation-summary-errors>ul"));返回validationMsgs.Text; } }。这就是它的编码方式。当我打印输出时,它以 2 行显示文本。用户名字段为必填项。密码需要 2 行。抱歉,我无法格式化 cmets。这是第一次在堆栈溢出中提出问题。请不要分钟。
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签