编码的UI - 断言StartsWith()无法按预期工作(VS 2015)

时间:2017-11-30 02:02:20

标签: visual-studio automated-tests coded-ui-tests

我正在尝试构建一个测试用例,我在其中检索数据对象列表并将其填充到数据网格中。

我想验证(断言)第一行有一个字段/列StartsWith“ABC”。

我可以看到生成的代码生成的元素基本上具有字段的精确显示值(在本例中为“ABCDEFG”)。

当然,当我运行这个测试时,它验证得很好,因为生成的元素(“ABCDEFG”)肯定以“ABC”开头。

问题是数据网格可以填充动态数据,因此字段显示可能类似于“ABC-FOO”甚至“XYZ”。

简而言之生成的自动代码似乎没有达到预期的效果。

我希望对实时字段显示执行StartsWith断言,而不是用于构建测试的生成(硬编码)字符串。

我在这里做错了吗? 我错过了一些关键的东西吗 或者我应该完全放弃Coded UI?

以下是生成的元素:

public HtmlLabel generatedLabel
{
    get
    {
        if ((this.mUIgeneratedLabelLabel == null))
        {
            this.mUIgeneratedLabelLabel = new HtmlLabel(this);
            #region Search Criteria
            this.mUIgeneratedLabelLabel.SearchProperties[HtmlLabel.PropertyNames.Id] = "Control_42";
            this.mUIgeneratedLabelLabel.SearchProperties[HtmlLabel.PropertyNames.Name] = null;
            this.mUIgeneratedLabelLabel.SearchProperties[HtmlLabel.PropertyNames.LabelFor] = null;
            this.mUIgeneratedLabelLabel.SearchProperties[HtmlLabel.PropertyNames.InnerText] = "ABCDEF-FOO";
            this.mUIgeneratedLabelLabel.FilterProperties[HtmlLabel.PropertyNames.Class] = "field-control";
            this.mUIgeneratedLabelLabel.FilterProperties[HtmlLabel.PropertyNames.ControlDefinition] = "class=\"field-control\" id=\"ControlB";
            this.mUIgeneratedLabelLabel.FilterProperties[HtmlLabel.PropertyNames.TagInstance] = "24";
            this.mUIgeneratedLabelLabel.WindowTitles.Add("MyTest");
            #endregion
        }
        return this.mUgeneratedLabelLabel;
    }
}

----更新----

解释我的困惑是什么:我已经在动态检索的某些文本(“ABCD”)上设置了我的StartsWith()断言。我创建了断言以检查文本StartsWith是否为“ABC”。现在,当我查看生成的断言代码时,我看到断言将始终通过,因为代码将文本的字符串文字(“ABCD”)与断言检查字符串文字(“ABC”)进行比较。我正在寻找的是使用在测试运行时检索的任何动态文本进行断言检查。希望这能清楚地表明我会陷入困境。

1 个答案:

答案 0 :(得分:0)

要找出问题所在,你可以先尝试一下 if (control.Text.Contains("ABC")),然后尝试if(control.Text.StartsWith("ABS")),看看问题出现在哪里。