15

我已经下载并安装了 Windows 8 消费者预览版,我想弄清楚如何使用 UI 自动化 API 从 Metro 风格应用程序中获取数据。

背景:我有很多使用Microsoft UI 自动化 API与应用程序交互的自动化测试。这些脚本是用 IronRuby 针对 .NET 4 编写的

最初,我只想检查开始菜单是否可见(如果是,请关闭它)

根据 Microsoft的说法,普通的 UI 自动化 API 应该能够访问和控制 Metro 风格的应用程序,但问题是,我无法弄清楚我的代码如何真正访问 Metro 应用程序的 UI?我们查看 UI 自动化数据的正常方式是使用UISpy,但是当我在 Windows 8 下运行 UI spy 并启动 Metro 应用程序时,没有提及它......似乎 Metro 应用程序(包括开始屏幕)被围起来了从桌面关闭。

如果我在 UISpy 中找不到 Metro 应用程序,我如何才能找到它们的自动化 ID,以及如何从我的自动化测试脚本中找到它们?

4

3 回答 3

5

在 Metro 风格应用程序中工作的一些关于 UI 自动化的资源:

  • 这是一个演示它的示例。

  • 这是一篇解释它的博客文章。

  • 这是关于该主题的论坛主题。

    该应用程序并没有阻止传统 UI 自动化正常工作。您可能必须获得更新的工具才能查看 Metro 风格的应用程序。有些附带消费者预览版。寻找inspect.exe。

于 2012-05-03T06:59:31.757 回答
2

UI 自动化工具可以自动化 Metro 应用程序。例如,检查RIATest

从 6.0 版开始,RIATest 中的一些特性专门针对 Metro 风格的应用程序自动化,特别是:

  • 能够始终掌握 Metro UI,让您可以同时查看 Metro 应用程序和 RIATest IDE,并在自动化 Metro 应用程序时最大限度地减少从桌面到 Metro 屏幕的切换。

  • 记录在本机 Windows GUI 元素(包括 Metro GUI)上执行的操作。记录器分析您的脚本代码并重用您的变量名称以生成更清晰的记录脚本,类似于您手动编写自动化脚本的方式。

  • Metro UI 中 Windows UI 自动化实施中此类错误的无缝解决方法。

免责声明:我在 RIATest 公司 Cogitek 工作。

于 2013-05-10T05:47:39.793 回答
1

WinRT(又名“Metro Style”)应用程序在沙箱中运行。您无法穿透应用程序之间的墙,包括桌面应用程序。这包括网络隔离(例如,除非在开发环境中,否则您不能引用本地主机)。有几个例外,例如共享和搜索联系人,它们允许应用程序之间进行非常特定类型的交互。

正是这个沙盒阻止了 UISpy 在后台看到正在执行的 WinRT 应用程序。我不确定 UISpy 如何在没有消费者预览版中不可用的沙盒的某种开发环境异常(类似于网络隔离异常)的情况下解决此问题。

我也不知道有关此时/是否支持 WinRT 应用程序的 UI 自动化 API 的任何公告。

于 2012-05-02T04:00:37.713 回答