我刚刚开始使用Visual Studio 2013 CodedUI测试工具为WPF应用程序开发UI测试。其他人报告了类似的问题(不同的情况),但没有人能够弄清楚如何在回放期间解决错误:
“请让阻止的控件可见并重试操作” 似乎测试工具无法找到正确的控件。在我的应用程序中,我在运行时动态加载用户控件。用户可以多次加载相同的控件;因为控件代表不同的文档类型。我可以唯一标记我的控件,以便工具可以找到控件吗?我尝试设置UIAutomationId没有运气。我已经尝试过使用十字准线工具了...我得出结论,除非有人能告诉我不同,这个工具不能支持动态生成的WFP应用程序。有什么想法吗?
答案 0 :(得分:0)
首先使用Inspect工具(Windows开发工具包附带的Inspect.exe)是否可以使用MSAA技术识别动态控件。因为MSAA在某些情况下无法识别控件。请参阅此帖MSAA Fails to find winforms controls
答案 1 :(得分:0)
在开始为我们的WPF应用程序开发CodedUI测试时遇到了同样的问题,问题似乎出现在我需要的控件所在的自定义标签页中。
我通过点击控件的x / y点来规避问题,然后再对其进行任何操作(例如输入文本)。这确保了控制的重点。
我创建的方法:
public void ClickControl(UITestControl uiTestControl)
{
var boundingRectangle = uiTestControl.BoundingRectangle;
var xavg = boundingRectangle.Right - (boundingRectangle.Width / 2);
var yavg = boundingRectangle.Bottom - (boundingRectangle.Height / 2);
var point = new Point(xavg, yavg);
Mouse.Click(point);
}
希望它也适合你!
答案 2 :(得分:0)
如果您有多个具有相同Automation属性的动态生成的UI控件,则一种解决方案是使用Instance UITestControl搜索属性来指定您要访问的控件的哪个实例:
yourDuplicateControl.SearchProperties["Instance"] = "1";
另一个需要对应用程序进行开发方面更改的解决方案是为控件生成AutomationId
,这对于实例是唯一的,例如动态地将AutomationId
设置为以下内容:
yourDuplicateControlAutomationId1
yourDuplicateControlAutomationId2
yourDuplicateControlAutomationId3