在 Coded UI 中找不到没有足够定义属性的控件

Can't find controls that don't have enough defined properties in Coded UI

这可能是一个菜鸟问题,但在我的编码 UI 测试记录中,我记录了很多没有足够定义属性的控件,无法在回放中找到。

例如:

public HtmlEdit UIItemEdit
{
    get
    {
        if ((this.mUIItemEdit == null))
        {
            this.mUIItemEdit = new HtmlEdit(this);
            #region Search Criteria
            this.mUIItemEdit.SearchProperties[HtmlEdit.PropertyNames.Id] = null;
            this.mUIItemEdit.SearchProperties[HtmlEdit.PropertyNames.Name] = null;
            this.mUIItemEdit.SearchProperties[HtmlEdit.PropertyNames.LabeledBy] = null;
            this.mUIItemEdit.SearchProperties[HtmlEdit.PropertyNames.Type] = "SINGLELINE";
            this.mUIItemEdit.FilterProperties[HtmlEdit.PropertyNames.Title] = null;
            this.mUIItemEdit.FilterProperties[HtmlEdit.PropertyNames.Class] = null;
            this.mUIItemEdit.FilterProperties[HtmlEdit.PropertyNames.ControlDefinition] = "type=\"text\" value=\"\"";
            this.mUIItemEdit.FilterProperties[HtmlEdit.PropertyNames.TagInstance] = "5";
            this.mUIItemEdit.WindowTitles.Add("http://cms.home.psafe.com/");
            #endregion
        }
        return this.mUIItemEdit;
    }

中,我了解了 SearchProperties,但在这种情况下它看起来不是合适的解决方案。

还有其他方法可以正确包装这些控件吗?

如果可以找到它的包含元素,您也许就能找到它。您可以使用包含元素来确定搜索范围。因此,找到该元素的父元素,然后在其中找到一个输入类型=文本:

var container = new HtmlControl(bw); //where bw is the browser window 
HtmlDiv parentDiv = new HtmlDiv(container);
parentDiv.SearchProperties[HtmlDiv.PropertyNames.Id] = "theIdOfYourDiv";

HtmlEdit edt = new HtmlEdit(parentDiv); //the search scope is narrowed down to the div only. This may be enough to find your control with the search property.
edt.SearchProperties[HtmlEdit.PropertyNames.Type] = "SINGLELINE";

你有两个选择:

  1. 试试 crowcoder 在父级搜索的解决方案。此解决方案的问题是,当您四处移动控件时,您将大量更改代码。

  2. 将 Id 属性 添加到 HTML 中的所有控件,这将使您的编码 UI 更健壮并且对 UI.