C# 播放未能在编码的UI中找到具有给定搜索属性的控件
我是编码UI测试的新手,所以这里有一个“简单”的问题: 尝试在菜单选项中导航时,我记录了动作并尝试播放。我收到以下消息:C# 播放未能在编码的UI中找到具有给定搜索属性的控件,c#,visual-studio,coded-ui-tests,C#,Visual Studio,Coded Ui Tests,我是编码UI测试的新手,所以这里有一个“简单”的问题: 尝试在菜单选项中导航时,我记录了动作并尝试播放。我收到以下消息:播放无法找到具有给定搜索属性的控件 以下是录制工具生成的代码: public void NavegarSituacao() { #region Variable Declarations HtmlCustom uINotíciasCustom = this.UIHttpcmshomepsafecomIWindow.
播放无法找到具有给定搜索属性的控件
以下是录制工具生成的代码:
public void NavegarSituacao()
{
#region Variable Declarations
HtmlCustom uINotíciasCustom = this.UIHttpcmshomepsafecomIWindow.UIHttpcmshomepsafecomDocument.UINotíciasCustom;
HtmlCustom uIEntretenimentoCustom = this.UIHttpcmshomepsafecomIWindow.UIHttpcmshomepsafecomDocument.UIEntretenimentoCustom;
HtmlCustom uIMulherCustom = this.UIHttpcmshomepsafecomIWindow.UIHttpcmshomepsafecomDocument.UIMulherCustom;
HtmlCustom uIEsportesCustom = this.UIHttpcmshomepsafecomIWindow.UIHttpcmshomepsafecomDocument.UIEsportesCustom;
HtmlCustom uIHomemCustom = this.UIHttpcmshomepsafecomIWindow.UIHttpcmshomepsafecomDocument.UIHomemCustom;
HtmlCustom uITecnologiaCustom = this.UIHttpcmshomepsafecomIWindow.UIHttpcmshomepsafecomDocument.UITecnologiaCustom;
HtmlCustom uIVídeosCustom = this.UIHttpcmshomepsafecomIWindow.UIHttpcmshomepsafecomDocument.UIVídeosCustom;
#endregion
// Click 'Notícias' custom control
Mouse.Click(uINotíciasCustom, new Point(89, 21));
// Click 'Entretenimento' custom control
Mouse.Click(uIEntretenimentoCustom, new Point(90, 15));
// Click 'Mulher' custom control
Mouse.Click(uIMulherCustom, new Point(90, 9));
// Click 'Esportes' custom control
Mouse.Click(uIEsportesCustom, new Point(84, 18));
// Click 'Homem' custom control
Mouse.Click(uIHomemCustom, new Point(82, 16));
// Click 'Tecnologia' custom control
Mouse.Click(uITecnologiaCustom, new Point(85, 8));
// Click 'Vídeos' custom control
Mouse.Click(uIVídeosCustom, new Point(70, 11));
}
有没有办法通过某种定位器捕捉这些元素(这些元素没有id)?大概是这样的:
public HtmlCustom UIHomemCustom
{
get
{
if ((this.mUIHomemCustom == null))
{
this.mUIHomemCustom = new HtmlCustom(this);
#region Search Criteria
this.mUIHomemCustom.SearchProperties["TagName"] = "LI";
this.mUIHomemCustom.SearchProperties["Id"] = null;
this.mUIHomemCustom.SearchProperties[UITestControl.PropertyNames.Name] = null;
this.mUIHomemCustom.FilterProperties["Class"] = null;
this.mUIHomemCustom.FilterProperties["ControlDefinition"] = "data-value=\"201405231131464799\"";
this.mUIHomemCustom.FilterProperties["InnerText"] = "Homem";
this.mUIHomemCustom.FilterProperties["TagInstance"] = "8";
this.mUIHomemCustom.FilterProperties["Xpath"] = "#default > div.wrapper > div.menu > div > ul > li:nth-child(5)";
this.mUIHomemCustom.WindowTitles.Add("http://cms.home.psafe.com/");
#endregion
}
return this.mUIHomemCustom;
}
}
这是菜单:
关于CODEDUI回放的一个有趣的事情是,它在录制过程中不一定考虑用户的时间因素。这些是我多年来学到的关于这类错误的东西
关于CODEDUI回放的一个有趣的事情是,它在录制过程中不一定考虑用户的时间因素。这些是我多年来学到的关于这类错误的东西
进入UI映射,将
InnerText
的FilterProperty
更改为SearchProperty
。首先应用搜索属性——如果它找到一个完全匹配的,它甚至不查看过滤器属性。在本例中,控件(文本值)最重要的一点是过滤器属性
它试图找到一个没有ID的
标记。它无疑会找到多个匹配项。然后应用过滤器属性,这些属性可能随页面加载的不同而不同
您还可以将ID
属性应用于
标记,然后更新UI-map搜索属性,以便它搜索该特定ID,这也将解决问题
一般来说,在web应用程序中使用编码UI时,最好确保页面上的所有内容都具有唯一的“ID”属性。这使得编码的UI更容易锁定您试图与之交互的页面元素。进入UI映射,将
InnerText
的FilterProperty
更改为SearchProperty
。首先应用搜索属性——如果它找到一个完全匹配的,它甚至不查看过滤器属性。在本例中,控件(文本值)最重要的一点是过滤器属性
它试图找到一个没有ID的
标记。它无疑会找到多个匹配项。然后应用过滤器属性,这些属性可能随页面加载的不同而不同
您还可以将ID
属性应用于
标记,然后更新UI-map搜索属性,以便它搜索该特定ID,这也将解决问题
一般来说,在web应用程序中使用编码UI时,最好确保页面上的所有内容都具有唯一的“ID”属性。这使得编码UI更容易集中在您试图与之交互的页面元素上。我也遇到过类似的问题。在我的例子中,我使用的是较旧的CodedUI测试,这些测试是用稍旧的版本(12.0.21005.1)记录的。相同的错误消息(“回放无法找到具有给定搜索属性的控件”),错误特别提到了在页面上找不到的文本输入 对我来说,答案是当页面更改时(在单击上一页的链接后),BrowserWindow对象正在丢失其引用。我不知道为什么 解决方案是在log语句中调用BrowserWindow.TryFind(),然后按先前记录的方式查找所有工作
Jus认为我会与他人分享,以防其他人有此问题。我也遇到过类似的问题。在我的例子中,我使用的是较旧的CodedUI测试,这些测试是用稍旧的版本(12.0.21005.1)记录的。相同的错误消息(“回放无法找到具有给定搜索属性的控件”),错误特别提到了在页面上找不到的文本输入 对我来说,答案是当页面更改时BrowserWindow对象失去了它的引用(在单击上一个链接之后)