如何进行Metro风格应用的UI自动化?

Ori*_*rds 16 ui-automation windows-8 windows-runtime

我已经下载并安装了Windows 8消费者预览版,我想弄清楚如何使用UI Automation API来从metro风格的应用程序中获取数据.

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

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

根据微软的说法,普通的UI Automation API应该能够访问和控制metro风格的应用程序,但问题是,我无法弄清楚我的代码如何实际访问metro应用程序的UI?我们查看UI自动化数据的正常方式是使用UISpy,但是当我在Windows 8下运行UI间谍并启动一个metro应用程序时,没有提到它......似乎地铁应用程序(包括启动屏幕)被围住了离开桌面.

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

Ste*_*owe 6

UI自动化的一些资源在Metro风格的应用程序中有效:

  • 这是一个展示它的示例.
  • 这是一篇解释它的博客文章.
  • 这是关于这个主题的论坛帖子.

    应用程序没有任何东西阻止传统的UI自动化正常工作.您可能必须获得更新的工具才能查看Metro风格的应用程序.有些人发布了Consumer Preview.寻找inspect.exe.

  • 顺便说一句,可以在c:\ program files(x86)\ Windows Kits\8.0\bin\x86下的win8 RTM机器上找到inspect.exe. (2认同)

Mar*_*eur 1

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

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

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