实 验 简 介
UISpy 工具,开发人员和测试人员将能够查看应用程序的用户界面(UI)元素并与之交互。它随着 Microsoft Windows SDK 一起安装。类似于浏览器中的F12工具,或者Selenium IDE工具一样,可以快速地帮助我们识别Windows应用程序的元素属性。
实 验 目 的
(1)熟练应用UISpy工具识别Windows应用程序界面元素的属性,并用于自动化测试。
实 验 流 程
UISpy下载,可以随着Windows SDK一起安装,下载路径:
https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk,系统要求如图。
如果是win8一下,官网提示要打补丁KB2999226,当然,正常安装python3的时候如果没有提示failed的信息,一般这个补丁已经安装。当然,大家也可以在百度上搜索该工具。
在SDK 安装路径(uispy.exe)的/bin 文件夹中,也可以从“开始”菜单进行访问(“开始”/“所有程序”/“Microsoft Windows SDK”/“工具”/“UISpy”)。打开UISpy.exe,可以打开工具主界面,如图。
(1)“控件视图”窗格(Control View默认),此窗格包含应用程序 UI 项的层次结构。其他视图包括“自定义视图”、“内容视图”和“原始视图”,在view选项中勾选需要的视图,如图所示。
(a)原始视图
UI Automation树的原始视图是 AutomationElement 对象的完整树,该树的根元素是桌面。原始视图完全遵循应用程序的本机编程结构,因此是最详细的可用视图。原始视图还是其他树视图的生成基础。由于原始视图取决于基础 UI 框架,因此 WPF 按钮的原始视图将与 Win32 按钮的原始视图不同。
原始视图是通过以下方法来获取的:在不指定属性的情况下搜索元素,或者使用 RawViewWalker 在树中导航。
(b)控件视图
由于 UI Automation树的控件视图紧密映射到由最终用户查看的 UI 结构,因此它能使辅助技术产品更轻松地完成向最终用户描述 UI 并帮助最终用户与应用程序交互的任务。
控件视图是原始视图的子集。它包括原始视图中的所有UI项,最终用户会将这些项理解为UI中控件逻辑结构的交互式项或构成项。例如,列表视图标题、工具栏、菜单和状态栏等项容器构成了 UI 逻辑结构,但其本身并不是交互式 UI 项。仅针对布局设计或修饰目的而使用的非交互式项在控件视图中不显示。仅为了将控件放置在对话框中而本身不包含任何信息的面板就是这样的项。对话框中包含信息和静态文本的图形是在控件视图中显示的非交互式项。控件视图中包括的非交互式项不能接收键盘焦点。
控件视图是通过以下方法获取的:搜索 IsControlElement 属性设置为 true 的元素,或者使用 ControlViewWalker 在树中导航。
(c)内容视图
UI Automation树的内容视图是控件视图的子集。内容视图中包含用来在用户界面中传达真正信息的 UI 项(包括可以接收键盘焦点的 UI 项,以及一些不是 UI 项标签的文本)。
例如,下拉组合框中的值将出现在内容视图中,因为它们表示正由最终用户使用的信息。在内容视图中,组合框和列表框均表示为 UI 项的集合,在该集合中,可以有一项(或多项)处于选中状态。由于内容视图旨在显示要呈现给用户的数据或内容,因此,内容视图中不存在如下情况:始终有一项处于打开状态,而另有一项是可以展开和折叠的。
内容视图是通过以下方法获取的:搜索 IsContentElement 属性设置为 true 的元素,或者使用 ContentViewWalker 在树中导航。
UI Spy 打开后,该窗格将显示“Desktop”节点及其第一级子节点,也就是电脑桌面上所有的快捷方式、已经打开的程序等(以上信息来自Windows官网)。
(2)“属性”窗格(Properties),窗格显示选定 UI 项的属性值。
(3)“输出”窗格(output),该窗格显示应用程序引发的事件和 UI Automation异常。
1.UI Spy元素选取
UI Spy 提供了两种方式来选择 UI 项:焦点跟踪和悬停模式。这两种方法都会选择一个 AutomationElement。选中某项后,将会在该项周围绘制一个矩形。选定的项显示在各个打开的“视图”窗口中,该项的 UI Automation属性将显示在“属性”窗口中,如图所示。
(1)焦点跟踪模式:
使用 UI Spy 的焦点跟踪时,工具将跟踪具有键盘焦点的UI项。焦点跟踪通常用于逐项通过UI项以确保每一项都能收到键盘焦点。
(2)悬停模式
使用 UI Spy 的悬停模式时,将通过单击并按住 Ctrl 一段时间来选择UI项。若要配置时间的长度,请在“编辑”菜单上单击“设置”。如果要选择特定UI项,悬停模式十分方便。
2.查看属性
以QQ音乐为例,在属性窗体内,将显示出QQ音乐快捷方式在Desktop上的元素信息,如图8-6所示。
上图已经标识出常用的几个属性,ClassName、Name和ProcessId。后面使用Python来实现自动化测试时,需要找到这些重要的属性。
思 考 练 习
(1)自学了解Windows应用程序的消息机制,了解内核程序user32.dll的用法。
(2)了解WPF和WinForm应用程序以及.NET框架相关知识。
下周分享:核心实验:利用UIAutomation库测试Windows应用