在 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";
你有两个选择:
试试 crowcoder 在父级搜索的解决方案。此解决方案的问题是,当您四处移动控件时,您将大量更改代码。
将 Id 属性 添加到 HTML 中的所有控件,这将使您的编码 UI 更健壮并且对 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";
你有两个选择:
试试 crowcoder 在父级搜索的解决方案。此解决方案的问题是,当您四处移动控件时,您将大量更改代码。
将 Id 属性 添加到 HTML 中的所有控件,这将使您的编码 UI 更健壮并且对 UI.