和MSAA相比较:UI Automation重新设计了一套架构,无论是对传统的winform,还是新的wpf,定义了一套统一的模型,其API的使用也相对更简单。和.net framework 3.0一起,也有个UISpy的工具,提供地位所需要的元素信息能辅助大家来使用UI Automation。

1.安装UI Spy

UISpy 工具,开发人员和测试人员将能够查看应用程序的用户界面 (UI) 元素并与之交互。它随着 Microsoft Windows SDK 一起安装。

UISpy下载比较麻烦,可以随着Windows SDK一起安装,下载路径:

图x-x Windows SDK 配置要求

如果是win8一下,官网提示要打补丁KB2999226,当然,正常安装python3的时候如果没有提示failed的信息,一般这个补丁已经安装。

在SDK 安装路径 (uispy.exe) 的 /bin 文件夹中,也可以从“开始”菜单进行访问(“开始”/“所有程序”/“Microsoft Windows SDK”/“工具”/“UISpy”)。打开UISpy.exe,可以打开工具主界面,如图x-x所示。

图x-x UISpy界面

(1)“控件视图”窗格(Control View默认),此窗格包含应用程序 UI 项的层次结构。其他视图包括“自定义视图”、“内容视图”和“原始视图”,在view选项中勾选需要的视图,如图x-x所示。

图x-x UI Spy中各种视图

(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异常。

2.UI Spy元素选取

UI Spy 提供了两种方式来选择 UI 项:焦点跟踪和悬停模式。这两种方法都会选择一个 AutomationElement。选中某项后,将会在该项周围绘制一个矩形。选定的项显示在各个打开的“视图”窗口中,该项的 UI Automation属性将显示在“属性”窗口中,如图x-x所示。

图x-x 通过UI Spy选择Windows元素

(1)焦点跟踪模式:

使用 UI Spy 的焦点跟踪时,工具将跟踪具有键盘焦点的 UI 项。焦点跟踪通常用于逐项通过 UI 项以确保每一项都能收到键盘焦点。

(2)悬停模式

使用 UI Spy 的悬停模式时,将通过单击并按住 Ctrl 一段时间来选择 UI 项。若要配置时间的长度,请在“编辑”菜单上单击“设置”。如果要选择特定 UI 项,悬停模式十分方便。

3.查看属性

以QQ音乐为例,在属性窗体内,将显示出QQ音乐快捷方式在Desktop上的元素信息,如图x-x所示。

图x-x 属性

上图已经标识出常用的几个属性,ClassName、Name和ProcessId。后面使用Python来实现自动化测试时,需要找到这些重要的属性。

下期推送:UIAutomation运用

为了答谢大家对蜗牛学院的支持,蜗牛学院将会定期对大家免费发放干货,敬请关注蜗牛学院的官方微信。

python uiautomation_蜗牛笔记-文章-UIAutomation使用(一)相关推荐

  1. python uiautomation选择list内容_蜗牛笔记-文章-UIAutomation运用

    UIAutomation支持多种语言,这里就通过python来调用.UIAutomation是第三方库,所以首先需要安装库pip install uiautomation.先用UIAutomation ...

  2. python uiautomation选择list内容_蜗牛笔记-文章-UIAutomation使用中的问题

    前面以计算器为例子,UIAutomation可以轻松实现.但在实际操作中,不可能就能得到所有元素的唯一属性,很多时候是什么都没有,或者是大家都用一样的名字.这样定位就不容易实现. 以QQMusic为例 ...

  3. python基础教程视频纸飞机_蜗牛笔记-文章-全年专题直播课四月课表正式上线!​...

    各位老铁,大家好~ 蜗牛学院4月份的直播课程已经在"在线课堂"正式上线,各位小伙伴点击以下图片即可立即报名: 另外,在此要说两点比较重要内容: 1.三月免费领取了蜗牛学院<2 ...

  4. Python基础知识笔记(文章内容持续更新)

    python程序实例解析 2.1温度转换 2.2Python程序语法元素分析 2.2.3命名字与保留字 2.2.4字符串 2.2.5赋值语句 2.2.6 input函数 输入函数 2.2.7分支语句 ...

  5. python小甲鱼笔记

    提示:python小甲鱼笔记 文章目录 前言 〇.函数 1.常用基本函数 2.常用表函数 3.常用子函数 4.输入.输出 5.字符串函数 5.快捷键 一.常用函数案例 1.文本输出 2.猜数 if 实 ...

  6. Python数模笔记-NetworkX(1)图的操作

    1.NetworkX 图论与网络工具包 NetworkX 是基于 Python 语言的图论与复杂网络工具包,用于创建.操作和研究复杂网络的结构.动力学和功能. NetworkX 可以以标准和非标准的数 ...

  7. python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  8. Machine Learning with Python Cookbook 学习笔记 第8章

    Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...

  9. 北理工嵩天Python语言程序设计笔记(10 Python计算生态概览)

    前言 本文是对<北理工 嵩天/黄天宇/礼欣 Python语言程序设计>的学习笔记,供自己查阅使用. 文章目录 北理工嵩天Python语言程序设计笔记(目录) 北理工嵩天Python语言程序 ...

最新文章

  1. JBoss 系列十六:JBoss7/WildFly配置domain模式
  2. 在Android Studio中进行代码混淆
  3. ThreadPool.QueueUserWorkItem的用法
  4. 设置css3动画的顺序,CSS3 “瓷砖”顺序飘落的动画
  5. 人类大脑每日24小时工作节奏表
  6. 毕业论文写作Tips
  7. 碧蓝航线8.20服务器维护,碧蓝航线半人马来袭 8.20更新公告
  8. iOS NSString 与NSData转化
  9. 中国网络安全产业白皮书
  10. Spring之ApplicationContext
  11. istringstream字符串流对象
  12. 计算机电子线路制图是学啥的,电气制图与电子线路CAD课程教学大纲.doc
  13. 计算机网络教室验收标准,计算机网络教室建设和配备要求
  14. 游戏开发人员需要了解的5种ASO技术,苹果游戏aso优化
  15. mysql 如何 导入txt文件_mysql中导入txt文件
  16. Django 中文本地化汉化方法
  17. 理财笔记 - 给朋友的建议
  18. 请收下这 72 个炫酷的 CSS 技巧
  19. 【Love2d从青铜到王者】第十三篇:Love2d之游戏:射击敌人(Game: Shoot the enemy)
  20. WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建

热门文章

  1. TFT液晶屏驱动移植
  2. #算法综述#__GPS时间转UTC时间
  3. 关于torch.size()和torch.size(0)
  4. PDF转PPT免费软件哪个好?告诉你几个PDF转PPT的软件
  5. 如何批量将条形码输出为PNG图片
  6. 面试问题-理解数字后仿,其次针对性理解数字后仿中的sdf文件(约束文件)的作用
  7. android4.0 x86,PC专用Android 4.0 x86系统上手体验
  8. 2022年危险化学品经营单位主要负责人考试及危险化学品经营单位主要负责人考试资料
  9. Windows下用sftp巧妙打造安全传输
  10. mysql mapinfo_MapInfo TAB和MIF/MID