【问题标题】:UI Automation Verify for finding AutomationId of elementsUI 自动化验证以查找元素的 AutomationId
【发布时间】:2012-01-19 02:45:31
【问题描述】:

我正在尝试自动测试用 C++ 编写的应用程序。 我用UI Automationhttp://msdn.microsoft.com/en-us/library/ms747327.aspx 我使用UIAVerify 找到了一些元素的automationIds,但有些元素在工具中显示为禁用(灰显)。

这是否意味着某些元素的交互不可自动化?如何为没有 AutomationId 值的元素自动交互?

编辑:我正在尝试使用自动化来单击具有ControlType.Custom 并为其设置了Name 属性的控件。有没有办法做到这一点?这两种方法我都试过了,都失败了:

方法一:

//using framework white
var button = window.Get(SearchCriteria.ByControlType(ControlType.Custom).AndByText ("<Name Property>"));

方法二:

//using Automation Framework
aeCtrl = aeParentPanel.FindFirst(TreeScope.Children,
                            new PropertyCondition(AutomationElement.NameProperty, "<Name Property>"));

【问题讨论】:

    标签: user-interface ui-automation


    【解决方案1】:

    来自codeplex 上的UIA Verify 页面链接到的"How To Use UI Verify" Word .doc 文件:

    注意自动化元素树中的灰色(不可用)节点表示该元素是 UI 自动化原始视图的成员,但不满足被视为内容视图或内容视图成员的必要条件控制视图。但是,仍然可以从 Visual UI 自动化验证中测试该元素。有关详细信息,请参阅 UI 自动化树概述。

    这基本上意味着这些元素是“chrome”项,它们是菜单栏或滚动条之类的东西,而不是列表项之类的内容。它们仍然存在并且可以进行测试。

    --

    并非每个元素都有AutomationID。这真的取决于开发人员将这些设置为适合用于测试。在某些情况下,它们来自底层框架:例如,对于Win32 控件,Control ID(如果存在)用于生成AutomationID。在WPF 中,您必须设置开发人员必须通过AutomationProperties.AutomationId 附加属性来分配它。

    通常它只用于对话框中的控件,用于区分它们。控件中的项目 - 例如。列表框中的项目 - 通常由它们的Name 标识(或Value,对于其他控件)。对于从外部源生成的项目尤其如此 - 例如包含文件名的列表 - 因为没有合理的方式可以提前分配 AutomationIDs

    【讨论】:

    • 感谢您指向“参考”一词,我应该搜索一下!我想我会为其他控件使用名称/值属性。这些“名称”可能会在我的产品的下一个版本中发生变化,因此需要解决...
    • 如果它是您的产品,那么您应该能够将 AutomationID 分配给稳定的东西。 AutomationID 的另一个主要用途是作为“名称”的一种形式,它在本地化构建中是稳定的 - 不能轻易在那里使用名称,因为它在每种语言上都会有所不同。您使用的是什么框架 - Win32、WinForms、WPF 或其他?
    • 我的产品是用 C++ 编写的。如果开发人员仅使用托管语言编写产品,我认为 AutomationID 可以由他们分配。我还能分配 AutomationID 吗?提前致谢。
    • 它可以是普通的 Win32 - 直接使用 USER32 控件 - 也可以是 MFC。无论哪种方式,AutomationID 都基于底层控件 ID - 通常是对话框模板中的控件 ID,您也可以使用 GetWindowLong(GWL_ID) 获取/设置它 - 请与拥有代码的人联系以获取详细信息。如果他们已经在使用 ID 并且它是稳定的,那么您很可能可以将其用于测试。但是,如果他们在运行时动态分配 ID,那么您就不走运了。 (如果他们不使用它,您也许可以诱使他们将其设置为测试代码使用的值...)
    • (...请注意,这些 ID 仅适用于整体 HWND - 因此适用于整个列表框或列表视图或标签条,但不适用于其中的单个列表项或选项卡项 - 您必须使用名称或其他东西来区分它们。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多