Visual Studio 2013 CodedUI测试

时间:2015-01-16 21:07:53

标签: wpf visual-studio-2013 coded-ui-tests

我刚刚开始使用Visual Studio 2013 CodedUI测试工具为WPF应用程序开发UI测试。其他人报告了类似的问题(不同的情况),但没有人能够弄清楚如何在回放期间解决错误:

“请让阻止的控件可见并重试操作” 似乎测试工具无法找到正确的控件。在我的应用程序中,我在运行时动态加载用户控件。用户可以多次加载相同的控件;因为控件代表不同的文档类型。我可以唯一标记我的控件,以便工具可以找到控件吗?我尝试设置UIAutomationId没有运气。我已经尝试过使用十字准线工具了...我得出结论,除非有人能告诉我不同​​,这个工具不能支持动态生成的WFP应用程序。有什么想法吗?

3 个答案:

答案 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