我正在尝试设置一个编码的 UI 测试,以允许我在登录时检查错误消息。测试运行,但我正在努力让断言工作。
返回的响应嵌套如下:-
<div class='ui-errors'>
<ul>
<li>Your password is invalid</li>
</ul>
</div>
我需要设置什么来检查断言中该类的 div 中的第一个 li ?
我正在尝试设置一个编码的 UI 测试,以允许我在登录时检查错误消息。测试运行,但我正在努力让断言工作。
返回的响应嵌套如下:-
<div class='ui-errors'>
<ul>
<li>Your password is invalid</li>
</ul>
</div>
我需要设置什么来检查断言中该类的 div 中的第一个 li ?
编码的 UI 可以捕获 DIV。在以下代码中,我从您提供的示例中创建了一个自定义 DIV 对象。AdrianHHH 的回答肯定会为您提供您需要插入到我的示例中的信息。
var error = new HtmlDiv(new Parent(RootParentWindow));
error.SearchProperties.Add("Class", "ui-errors");
var errors = error.FindMatchingControls();
foreach (var item in errors)
{
Assert.IsTrue(item.GetProperty("InnerText").ToString().Contains("Your password is invalid"));
}
编码的 UI 并不真正查看 DIV 或 UL 等。编码的 UI 会查看在显示器上绘制的内容。我建议您使用 Coded UI 十字准线工具检查错误消息,然后添加断言来检查消息。您还可以检查屏幕的同一区域以查看通过的测试,看看它们有何不同。
如果您是手动编写测试代码而不是让 Coded UI 为您生成代码,我建议您创建一个沙盒项目并将断言记录到其中。然后将生成的代码中有用的想法复制到您自己的测试代码中。
yonitdm答案将解决您的问题,但按照您的话,“该类的 div 中的第一个 li ”在下面尝试。
// Find Error Div
var errorDiv = new HtmlDiv(new Parent(RootParentWindow));
errorDiv.SearchProperties.Add("Class", "ui-errors");
errorDiv.Find();
// Get UL - First item in div
var errorUL = errorDiv.GetChildren().First(); // or GetChildren()[0]
// Get all LIs and take first item
var firstLI = errorDiv.GetChildren().First(); // or GetChildren()[0]
Assert.IsTrue(firstLI.GetProperty("InnerText").ToString().Contains("Your password is invalid"));
如果您可以获得需要断言的页面示例,我可以为您创建它,否则按照 AdrianHHH 所说的进行。
如果您不知道何时使用断言工具,您获得的所有选项都是断言特定控件的不同方式,例如,您可以断言它是否存在或内部文本是否相等等。