CodedUI在使用FindMatchingControls后只找到TopLevelWindow
本文关键字:TopLevelWindow FindMatchingControls CodedUI | 更新日期: 2023-09-27 18:10:57
我在WPF, Visual Studio 2013中使用CodedUI,使用内置工具和手写测试的组合。
我试图点击一个弹出窗口的基本按钮。我有类似的窗口工作良好,从外部库,但这是来自我自己的。
Mouse.Click(UIMap.StubWindow.OK);
这会产生一个错误,因为它找不到OK按钮。另外要求:
UIMap.StubWindow.DrawHighlight();
也失败,无法找到窗口。然而,有时它会在Windows的开始按钮周围画一个轮廓。奇怪的是,在调用FindMatchingControls()之后,下面的两行都能正常工作。
UIMap.StubWindow.FindMatchingControls();
UIMap.StubWindow.DrawHighlight();
Mouse.Click(UIMap.StubWindow.OK);
问题是,FindMatchingControls执行大约需要5-10秒,因为它必须搜索系统上的所有顶级窗口。即使匹配了一个窗口。调用找到();不工作。然而奇怪的是,
var x = UIMap.StubWindow.FindMatchingControls().Count;
x = 1
是否有这样的原因,或者我不需要调用FindMatchingControls的方法?我已经尝试更改搜索配置,以始终搜索窗口和OK按钮,但这不起作用。
SearchProperties依赖于一个AutomationId和一个Framework ID,两者都使用EqualsTo操作符。
即使直接从测试构建器中使用也不能工作。我只发现FindMatchingControls使它在调试时工作,检查歧义。
刚刚修复了这个问题。现在看起来很明显,但是弹出窗口写得很快,没有标题。
没有注意到/认为这很重要,但有相当大的影响。添加标题并重新设置UIMap,效果很好
您是否尝试过使用UIMap来定义控件?像这样的?:
var app = new ApplicationUnderTest();
var x = new UITestControl(app);
x.SearchProperties.Add("Key","Value");
x.SearchProperties.Add("Key","Value");
x.SearchProperties.Add("Key","Value");
Mouse.Click(x,x.GetClickablePoint());