1

我刚开始使用 Microsoft Test Manager 2015 并构建了两个测试用例。

第一个涉及单击托盘图标并从那里选择一个条目-效果很好。

第二种情况有点复杂,我想在 WPF 窗口中填写表格并单击一些按钮。

录制没有问题,但重播根本不起作用。它应该从选择一个 TabItem 开始,选择另一个 TabItem,它位于先前选择的 TabItem 内,然后填写文本字段并按一个按钮并确认两个消息对话。

问题是,TestRunner 无法找到我的任何控件。即使我选择了正确的 TabItem 并尝试执行“在此处输入一些文本”步骤之一,这也需要一些时间,然后在我的脸上抛出一个异常,粗略翻译,表示所选步骤的重播不能完成,因为它找不到与搜索属性匹配的控件(?)。然后是一个列表:

TechnologyName: 'UIA'
FrameworkId: 'WPF'
ControlType: 'TabPage'
AutomationId: 'sometabname'

所有这些都是正确的。如果我尝试执行不同的测试步骤,它说的基本相同,但不是“ControlType:TabPage”,而是说“ControlType:Edit”。

我不知道如何从这里开始。我做了一些搜索,但我能找到的只是关于 UIAutomation 配置/设置的问题,但据我所知,我无法直接在 MTM 中影响/控制它。

编辑

在简化测试“案例”(只需单击直接放置在窗口/第一个网格中的中止按钮)并编辑 mtm.exe.config 文件并启用跟踪/日志记录后,我从相应的日志文件中得到了这个:

mtm.exe, Playback - [WARNING] Internal warning: Target element "[UIA]FrameworkId='WPF' && ControlType='Button' && AutomationId='closeWithoutSave'" was not found, so all intermediate elements were ignored. An incorrect element that matches target element Id can be found as the result. Verify that all intermediate elements in QueryId have valid and unique Ids
mtm.exe, Playback - [WARNING] Internal warning: Search failure: [UIA]FrameworkId='WPF' && ControlType='Button' && AutomationId='closeWithoutSave' | Performed (4) searches, UI element not found
mtm.exe, Playback - {1} [FAILED] Function ElementFetcher::FindScreenElement failed to locate UI element (;[UIA]FrameworkId='WPF' && ControlType='Button' && AutomationId='closeWithoutSave') (Das angegebene Objekt wurde nicht gefunden.) 

这里奇怪的是,我什至在该按钮上设置了 Automation.AutomationID,但它仍然失败。另外我不确定这是否正确,但搜索似乎不包括具有该按钮的窗口的名称/automationID。因为那时我已经在应用程序中打开了两个窗口,所以我可以想象这是问题所在。

4

1 回答 1

1

我通过将 MTM 生成的 UI 测试加载到编码的 UI 测试项目中来检查它。我打开 UI 控制图,发现出了什么问题:

TabControl/TabPage 导航与 TrayIcon 的 ContextMenu 分组在同一窗口中。

原因是Name,MTM/编码的 UI 测试不使用 WPF 窗口的属性,而是使用该Title属性作为窗口的标识符(wtf?)。

解决方案:

将我的 WPF 配置窗口的 Title 属性设置为Configuration并重做受影响的测试步骤解决了该问题。

对有类似问题的人的提示:增加Visual Studio 安装文件夹中的文件的MaxLevelsForItemContainer值也可能会有所帮助。mtm.exe.configCommon7\IDE

于 2015-11-02T16:00:17.953 回答