【问题标题】:How to identify a winforms button control that has no AutomationId?如何识别没有AutomationId的winforms按钮控件?
【发布时间】:2019-09-27 04:34:06
【问题描述】:

我的任务是找出如何使用 appium-dotnet-driver 为桌面应用程序实现 UI 自动化。我已经成功地使用 windows 计算器应用程序进行 UI 单元测试。

话虽如此,我公司的 winforms 应用程序遇到了很多问题,因为某些元素要么没有 AutomationId,要么每次点击程序时都会更改。

是否有一种简单的方法可以为控件类型(即 Button)定义 AutomationId?

【问题讨论】:

  • 您能按名称识别控件吗?这也是一种选择。
  • 一些(我需要)有空字符串作为名称。

标签: c# winforms ui-automation


【解决方案1】:

通过设置相关控件的Name属性解决。 AutomationId 自动从 NameText 属性推断。希望它可以帮助某人。

【讨论】:

  • 另一个有趣的功能是Control.AccessibilityObject。它提供有用的属性。但是,它不包括控件的句柄。为此,您需要将 [Control].AccessibilityObject 转换为 Control.ControlAccessibleObjectIntPtr ctlHandle = ([Control].AccessibilityObject as Control.ControlAccessibleObject).Handle;
  • 此处的示例代码:Run event when any Form loads.
  • 你能解释一下这与我的问题有什么关系吗?看了你的例子后,还不是很清楚。谢谢!
  • 如何识别没有AutomationId的winforms按钮控件?。使用它的句柄。或其他属性:KeyboardShortcutParentBounds 等。它还允许在没有InvokePattern 的情况下直接调用 DefaultAction。
猜你喜欢
  • 1970-01-01
  • 2016-07-02
  • 1970-01-01
  • 2011-11-12
  • 1970-01-01
  • 2017-01-31
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
相关资源
最近更新 更多