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

15

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

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

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

根据微软的说法,普通的UI Automation API应该能够访问和控制Metro样式应用程序,但问题是,我不知道我的代码实际上如何访问Metro应用程序的UI?我们查看UI自动化数据的正常方式是使用UISpy,但是当我在Windows 8下运行UI Spy并打开Metro应用程序时,没有任何提及它的地方...似乎Metro应用程序(包括开始屏幕)与桌面隔离开来。

如果我在UISpy中找不到地铁应用程序,我该如何查找它们的自动化ID,并如何从我的自动化测试脚本中找到它们?

为澄清一下 - 您使用 XAML 堆栈还是 HTML5?我不确定,因为我都没有尝试过在这两种技术中进行 UI 自动化,但我认为根据您的选择可能会有一些不同。 - Filip Skakun
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.automation.aspx - Hans Passant
我还没有编写Metro应用程序,目前我只想查看启动屏幕(以及可能一些内置的Metro应用程序,如邮件),这些应该是Xaml/C++编写的吧? - Orion Edwards
3个回答

5
以下是涉及Metro风格应用程序的用户界面(UI)自动化资源:
  • 这里提供了一个演示它的示例

  • 这里有一篇博客文章对其进行了解释。

  • 这是一个关于此主题的论坛帖子

    没有任何关于应用程序的东西会阻止传统UI自动化的正确工作。您可能需要获取更新的工具来查看Metro样式应用程序,其中一些随着消费者预览版一起发售。请寻找inspect.exe。


2
顺便提一下,inspect.exe可以在win8 RTM机器上的c:\program files (x86)\Windows Kits\8.0\bin\x86找到。 - Orion Edwards

2

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

从版本6.0开始,RIATest的许多功能专门针对Metro样式应用程序自动化,特别是:

  • 能够保持在Metro UI顶部,使您能够同时看到您的Metro应用程序和RIATest IDE,并在自动化Metro应用程序时最小化从桌面切换到Metro屏幕。

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

  • 无缝解决在Metro UI中Windows UI Automation实现中出现的此类漏洞

免责声明:我为Cogitek公司工作,也就是RIATest公司。


1

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

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

我也不知道是否有任何公告宣布UI Automation API将在此时支持WinRT应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接