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

时间:2013-07-22 11:01:57

标签: coded-ui-tests

我正在尝试设置编码的UI测试,以便我在登录时检查错误消息。测试运行,但我很难让断言工作。

返回的响应嵌套如下: -

<div class='ui-errors'>
   <ul>
         <li>Your password is invalid</li>
   </ul>
</div>

我需要设置什么来检查断言中该类的div中的第一个li?

4 个答案:

答案 0 :(得分:2)

编码的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"));
        }

答案 1 :(得分:0)

编码的UI并不真正关注DIV或UL等。编码的UI会查看显示屏上绘制的内容。我建议您使用Coded UI交叉发工具检查错误消息,然后添加断言以检查消息。您也可以检查屏幕的相同区域以进行测试,看看它们之间的差异。

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

答案 2 :(得分:0)

如果您可以获得需要断言的页面示例,我可以为您创建,否则请执行AdrianHHH所说的内容。

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

答案 3 :(得分:0)

yonitdm 回答会解决您的问题,但按照您的说法,&#34; 该类的div中的第一个&#34;试试下面。

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