我已经为 WPF 应用程序设置了一个相对基本的编码 UI 测试。 测试将打开一个应用程序,按几个按钮,然后关闭它。 下面是测试代码:
[TestMethod]
public void CodedUITestMethod1()
{
ApplicationUnderTest.Launch(@"c:myappbinDebugmyapp.exe");
this.UIMap.LoginAndClickDoAction1();
for (int i = 1; i <= 10; i++)
{
this.UIMap.DoAction1();
}
this.UIMap.ExitMyApp();
}
该应用程序启动正常,登录并在第一次单击按钮。 它随后抛出异常:
Cannot perform 'Click' on the hidden control
当它抛出时,这似乎有所不同,但它提供的按钮永远不会隐藏。 看到这个问题后,我尝试插入:
uIMyButton1.Find();
uIMyButton2.Find();
进入UIMap在测试的顶部,但它没有区别。
可能导致此错误的原因是什么,我将如何调试它?
快速免责声明:这个问题与VS2015有关,所以我想这可能是一个合法的MS错误。
问题中未显示uIMyButton1
和uIMyButton2
的详细信息。它们可以用于这种风格的代码中(一旦干预声明被组合):
UIControl aControl = this.UIMap.uione.uitwo.uithree.uIMyButton1.Click();
按钮的任何父属性都可能适用于已重新显示的项。所以我认为这个问题中链接的问题显示了答案,只是Find()
应该在更高的层面上应用。
您可以尝试致电:
uithree.Find();
如果不成功,请致电
uitwo.Find();
等等。
出于性能原因,Find
被调用到层次结构中尽可能深的地方。