首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CodedUI只在使用FindMatchingControls后才找到TopLevelWindow

CodedUI只在使用FindMatchingControls后才找到TopLevelWindow
EN

Stack Overflow用户
提问于 2015-09-03 11:29:43
回答 2查看 625关注 0票数 0

我在WPF、Visual 2013中使用CodedUI,使用内置工具和手写测试的组合。

我试图点击弹出窗口上的一个基本按钮。我有类似的窗口,运行良好,从外部库,但这是我自己的。

代码语言:javascript
运行
复制
Mouse.Click(UIMap.StubWindow.OK);

这会产生一个错误,因为它找不到OK按钮。另外打电话:

代码语言:javascript
运行
复制
UIMap.StubWindow.DrawHighlight();

也失败,无法找到窗口。但是,有时它会在Windows中的Start Button周围绘制大纲。奇怪的是,在调用FindMatchingControls()之后,以下两行都正确工作。

代码语言:javascript
运行
复制
UIMap.StubWindow.FindMatchingControls();
UIMap.StubWindow.DrawHighlight();
Mouse.Click(UIMap.StubWindow.OK);

问题是,执行FindMatchingControls需要花费大约5-10秒的时间,因为它必须搜索系统上的所有顶级窗口。即使在匹配一扇窗户之后。调用Find();不工作。不管怎么奇怪,

代码语言:javascript
运行
复制
var x = UIMap.StubWindow.FindMatchingControls().Count;

X是1。

这样做是有原因的,还是我不需要打电话给FindMatchingControls?我尝试过将搜索配置更改为始终同时搜索窗口和OK按钮,但这是行不通的。

SearchProperties依赖于AutomationId和Framework,它们都使用EqualsTo运算符。

即使直接从测试构建器中使用,这也不起作用。我只发现FindMatchingControls使它在调试时工作,检查是否有歧义。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-07 15:49:14

把这个修好。现在看来很明显,但是弹出窗口写得很快,没有标题。

没有注意到/认为这很重要,但有相当大的影响。添加标题并再次设置UIMap,并且工作正常。

票数 1
EN

Stack Overflow用户

发布于 2015-09-04 19:01:46

您是否尝试过使用UIMap定义控件w/o?像这样吗?:

代码语言:javascript
运行
复制
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());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32374409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档