我正在尝试自动测试用C ++编写的应用程序。
我使用UI Automation
:http://msdn.microsoft.com/en-us/library/ms747327.aspx
我使用UIAVerify
查找某些元素的automationIds
,但某些元素在工具中显示为已禁用(灰显)。
是否意味着某些元素的交互不可自动化?如何自动化没有AutomationId
值的元素的交互?
编辑:我正在尝试使用自动化功能点击具有ControlType.Custom
并且为其设置了Name
属性的控件。有没有办法做到这一点?我尝试了这两种方法,都失败了:
方法1:
//using framework white
var button = window.Get(SearchCriteria.ByControlType(ControlType.Custom).AndByText ("<Name Property>"));
方法2:
//using Automation Framework
aeCtrl = aeParentPanel.FindFirst(TreeScope.Children,
new PropertyCondition(AutomationElement.NameProperty, "<Name Property>"));
答案 0 :(得分:4)
来自codeplex
上"How To Use UI Verify"页上链接到的UIA Verify Word .doc文件:
注意自动化元素树中的灰色(不可用)节点表示该元素是UI自动化原始视图的成员,但不符合被视为内容视图或控制视图。但是,仍可以从Visual UI Automation Verify中测试该元素。有关更多信息,请参阅UI自动化树概述。
这基本上意味着这些元素是'chrome'项目,它们是菜单栏或滚动条等内容,而不是列表项等内容。它们仍在那里,可以进行测试。
-
并非每个元素都有AutomationID
。开发人员可以将这些设置为适合用于测试。在某些情况下,它们来自底层框架:例如,对于Win32
控件,Control ID
- 如果存在 - 用于生成AutomationID
。在WPF
中,您必须设置deverloper必须通过AutomationProperties.AutomationId
附加属性进行分配。
通常它只是对话框中控件的设置,用于区分它们。控件中的项目 - 例如。列表框中的项目通常由Name
标识(或Value
,用于其他控件)。对于从外部源生成的项(尤其是包含文件名的列表)的情况尤其如此,因为没有合理的方式AutomationIDs
可以提前分配。