我想手动定义一个wintree对象,如下面链接中其他一些控件所述 https://www.evoketechnologies.com/blog/windows-automation-testing-coded-ui/
首先,我在如下的UIMap文件中定义了一个wintree对象
public WinTree WinTreeObject()
{
var winTreeProps = new WinTree(WinWindow) { TechnologyName = "MSAA" };
winTreeProps.SearchProperties.Add("ControlName", "tv");
winTreeProps.WindowTitles.Add("ProMANAGE ( admin @ Demo )");
return winTreeProps;
}
我在代码中这样称呼(如果我不对WinTreeObject使用括号,VS会发出3w异常警告)
WinTree uITVTree1 = this.WinTreeObject();
Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnBlockedControlException:另一个控件正在阻止该控件。请使被阻止的控件可见,然后重试该操作。额外细节: 技术名称:“ MSAA” ControlType:“树” ---> System.Runtime.InteropServices.COMException:HRESULT .. 0xF004F003
这是我记录时在设计器文件中定义的方式
public WinTree UITVTree
{
get
{
if ((this.mUITVTree == null))
{
this.mUITVTree = new WinTree(this);
#region Search Criteria
this.mUITVTree.WindowTitles.Add("ProMANAGE © ( admin @ Demo )");
#endregion
}
return this.mUITVTree;
}
}
答案 0 :(得分:1)
您始终可以使用编码UI定义Wintree
对象。
一种方法如下:
Private WinTree ProductivityTree
{
get
{
WinTree wintreeObj= new WinTree(parentobj);
WintreeObj.searchproperties.add(Wintree.PropertyNames.Name,"treeTest");
return wintreeObj;
}
}
当层次结构下还有更多控件并且您尝试访问上面的控件时,就会遇到错误(即被阻止的控件)。
您可以在测试构建器的帮助下检查层次结构。