测试运行器在回放期间找不到控件
Test Runner can't find controls during replay
我刚开始使用 Microsoft Test Manager 2015 并构建了两个测试用例。
第一个涉及单击托盘图标,然后 select 从那里输入一个条目 - 效果很好。
第二种情况有点复杂,我想在 WPF window 中填写一个表单并单击一些按钮。
录音没有问题,但回放根本不起作用。它应该从 select 一个 TabItem 开始,select 另一个 TabItem 位于前一个 selected TabItem 中,然后填写文本字段并按下一个按钮并确认两个消息对话。
问题是,TestRunner 无法找到我的任何控件。即使我 select 正确的 TabItem 并且只是尝试执行 'enter someText here' 步骤之一,它也需要一些时间然后抛出一个异常在我面前,粗略翻译,说 'enter someText here' 的重播=46=]ed 步骤无法完成,因为找不到与搜索属性匹配的控件(?)。然后是一个列表:
TechnologyName: 'UIA'
FrameworkId: 'WPF'
ControlType: 'TabPage'
AutomationId: 'sometabname'
所有这些都是正确的。如果我尝试执行不同的测试步骤,它说的基本上是相同的,但不是 'ControlType: TabPage' 它说的是 'ControlType: Edit'.
我不确定如何从这里开始。我做了一些搜索,但我能找到的都是关于 UIAutomation configuration/set-up 的问题,但据我所知,我不能 influence/control 直接在 MTM 中。
编辑
简化测试后'case'(点击直接放在Window/first格中的abort按钮即可)编辑mtm.exe.config文件并启用tracing/logging我从各自的日志文件中得到这个:
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,但它仍然失败。我也不确定这是否正确,但搜索似乎不包括具有该按钮的 Window 的 name/automationID。因为那时我已经在应用程序中打开了两个 windows,所以我可以想象这是问题所在。
我检查了 MTM 生成的 UI 测试,方法是将其加载到编码的 UI 测试项目中。我打开了 UI 控制图,发现出了什么问题:
TabControl/TabPage 导航被分组在与 TrayIcon 的上下文菜单相同的 Window 中。
原因是,而不是使用 WPF Window、MTM/Coded UI 的 Name
属性 测试使用 Title
属性 作为一个 Window (wtf?).
的标识符
解决方法:
将我的 WPF 配置 window 的标题 属性 设置为 Configuration
并重做受影响的测试步骤解决了问题。
提示给有类似问题的人:它也可能有助于增加 [=] 中的 MaxLevelsForItemContainer
值14=] 文件位于 Visual Studio 安装文件夹的 Common7\IDE
中。
我刚开始使用 Microsoft Test Manager 2015 并构建了两个测试用例。
第一个涉及单击托盘图标,然后 select 从那里输入一个条目 - 效果很好。
第二种情况有点复杂,我想在 WPF window 中填写一个表单并单击一些按钮。
录音没有问题,但回放根本不起作用。它应该从 select 一个 TabItem 开始,select 另一个 TabItem 位于前一个 selected TabItem 中,然后填写文本字段并按下一个按钮并确认两个消息对话。
问题是,TestRunner 无法找到我的任何控件。即使我 select 正确的 TabItem 并且只是尝试执行 'enter someText here' 步骤之一,它也需要一些时间然后抛出一个异常在我面前,粗略翻译,说 'enter someText here' 的重播=46=]ed 步骤无法完成,因为找不到与搜索属性匹配的控件(?)。然后是一个列表:
TechnologyName: 'UIA'
FrameworkId: 'WPF'
ControlType: 'TabPage'
AutomationId: 'sometabname'
所有这些都是正确的。如果我尝试执行不同的测试步骤,它说的基本上是相同的,但不是 'ControlType: TabPage' 它说的是 'ControlType: Edit'.
我不确定如何从这里开始。我做了一些搜索,但我能找到的都是关于 UIAutomation configuration/set-up 的问题,但据我所知,我不能 influence/control 直接在 MTM 中。
编辑
简化测试后'case'(点击直接放在Window/first格中的abort按钮即可)编辑mtm.exe.config文件并启用tracing/logging我从各自的日志文件中得到这个:
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,但它仍然失败。我也不确定这是否正确,但搜索似乎不包括具有该按钮的 Window 的 name/automationID。因为那时我已经在应用程序中打开了两个 windows,所以我可以想象这是问题所在。
我检查了 MTM 生成的 UI 测试,方法是将其加载到编码的 UI 测试项目中。我打开了 UI 控制图,发现出了什么问题:
TabControl/TabPage 导航被分组在与 TrayIcon 的上下文菜单相同的 Window 中。
原因是,而不是使用 WPF Window、MTM/Coded UI 的 Name
属性 测试使用 Title
属性 作为一个 Window (wtf?).
解决方法:
将我的 WPF 配置 window 的标题 属性 设置为 Configuration
并重做受影响的测试步骤解决了问题。
提示给有类似问题的人:它也可能有助于增加 [=] 中的 MaxLevelsForItemContainer
值14=] 文件位于 Visual Studio 安装文件夹的 Common7\IDE
中。