在Visual Studio UI编码的测试中标识元素



我正在尝试设置一个编码的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查看在显示器上绘制的内容。我建议您使用CodedUI交叉头发工具来检查错误消息,然后添加一个断言来检查消息。您还可以检查屏幕的同一区域,以进行通过的测试,了解它们之间的差异。

如果你是手工编写测试代码,而不是让CodedUI为你生成代码,我建议你创建一个沙箱项目,并将断言记录到其中。然后将生成的代码中的有用想法复制到您自己的测试代码中。

如果你能得到一个需要断言的页面样本,我可以为你创建它,否则就按照AdrianHHH说的去做。

如果你不知道什么时候使用断言工具,你得到的所有选项都是断言特定控件的不同方式,例如,你可以断言它是否存在或内部文本是否相等等。

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

最新更新