0

我有一个 wpf 应用程序,它有一个文本框,我可以在其中第一次写一个文本值就可以了。如果我退出文本框所在的窗口,然后重新打开同一个窗口,则测试将无法再找到该框,尽管该框已启用,并且在我的屏幕上清晰可见。

我查看了盒子的值,x,y = -1,-1 和 height,width 也是 -1,-1,因为盒子是完全可见的,这令人困惑。

我知道框中的文本是什么,是否可以使用它作为解决方法来搜索文本框?

我会继续研究这个,但感谢任何反馈:)

编辑:经过进一步研究,原始字段顶部有第二个字段,提供了该框的用途的初步说明(“输入字段值”)。

也许这是一个 wpf 错误?

4

2 回答 2

3

我发现该框没有在 UIMap 上正确更新。这可以通过将应用程序窗口 SearchConfinguration(仅在特定测试中)设置为始终搜索来解决,如下所示:

    UIMap.ApplicationWindowName.SearchConfigurations.Add(SearchConfiguration.AlwaysSearch);

显然这会导致性能下降,但我没有注意到!

于 2013-07-20T00:22:48.160 回答
2

我会查看文本框的SearchPropertiesFilterProperties,我怀疑找到了两个并且选择了错误的一个。或者,可能是第二个窗口具有用于标识窗口的属性的一些不同值。

一个想法:再次手动运行程序,将带有文本框的第一个窗口移动到屏幕的一个角落,然后关闭该窗口。使窗口重新打开并将其移动到屏幕的对角;让窗口保持显示状态。打开 Coded UI 测试的 UI Map 并使用Locate命令找到该框 - 它应该在文本框周围画一条蓝线。

另一个想法是调用FindMatchingControls(如Coded UI conditional check on a method is not working中所示)然后使用属性(例如某些 x、y、height、width)来选择想要的控件。

我怀疑这是否是 WPF 错误,但它可能是 WPF 应用程序中的错误,当第一个窗口关闭时它没有正确清除。

于 2013-07-19T13:22:19.930 回答