DUIR Framework 相关技术介绍
开发者在搭建界面自动化测试框架时,又或者在开发界面自动化控制的机器人时,往往需要对界面进行自动化的程序控制。而现在公司内部使用的杜尔自动化框架,就是一个封装了界面自动化控制逻辑的程序框架。基于该框架,开发者可以轻松、快速的控制各类程序的界面,这些界面可以包含 Windows 界面、浏览器界面。
五年前曾经写过一篇关于自动化测试的框架的文章:《搭建 WPF 上的 UI 自动化测试框架》。杜尔自动化框架,也是基于类似的技术,今天整理一下这个框架所使用的技术,在这里和大家简单分享一下。
杜尔的架构如下图所示:

对图中的所涉及技术,简单介绍如下:
最底层平台,是 Windows 平台,我们的框架只考虑该平台界面的自动化。
最上层,是框架的使用者、客户端,目前这个框架会集成在我公司的另一个智能客户端 VICA (VAT Intelligent Client Assistant)中。
再往下,就是 DUIR: Dben UI Robot Framework,中文名:杜尔机器人框架。
杜尔框架主要分为两层:下层是对 windows 下各类普通控件的查找、定位、封装;上层则是基于部分常见的场景,使用下层的控件来实现的各类场景逻辑的封装。其核心,自然是底层的控件封装。该层的实现,主要依赖三类技术:
- 直接使用句柄、消息机制等底层 Windows 机制来实现控制的控制。
- 使用 UI Automation for Managed Code 来实现控件自动化。
- 使用 VSTT(Visual Studio Testing Tool)& RPF 框架来实现控件自动化以及录制功能。
第 2、3 两项技术,都主要依赖于底层的 Windows Automation API,该技术是整个体系的核心。介绍如下:
“Microsoft UI Automation is an accessibility framework that enables Microsoft Windows applications to provide and consume programmatic information about user interfaces (UIs). It provides programmatic access to most UI elements on the desktop. It enables assistive technology products, such as screen readers, to provide information about the UI to end users and to manipulate the UI by means other than standard input. UI Automation also allows automated test scripts to interact with the UI.”
详情,见:《Windows Automation API: UI Automation》。
再回过头来看 UI Automation for Managed Code,这是 UI Automation 的托管代码框架。详见:《UI Automation for Managed Code》。
另一项技术,则是 RPF,详见《Record and Playback Framework》。RPF 支持录制与播放,集成了 Win32、MSAA、UIA、IE 等底层平台,介绍如下:
“RPF is a tool used to record meaningful steps performed by a user against a UI-based target application and then generate a code/script to play these steps back. RPF consists of two parts Recording and Playback. Both parts use Win32 and
Microsoft Active Accessibility (MSAA) or UIAutom
ation(UIA) as the underlying technologies, however at this time RPF has full support for Win32 and MSAA only and UIA is
supported by Playback only. Also RPF
natively supports Internet Explorerwhich makes it the first (and the only at the moment) tool that natively supports Win32, MSAA, UIA and IE on Vista and XP.”
另外,图中的 VSTT,全称为 Visual Studio Testing Tool。是 Visual Studio 中 Coded UI Test 框架的基础框架。其使用托管代码构建,基于下层的 RPF 框架构建。通过使用 VSTT,使得我们可以以一种更加简单的 API、更加易用的托管代码,并配合更加方便使用的工具来实现 UI 自动化。详见:《Introduction to Record and Playback Engine in VSTT 2010》。
目前,虽然 DUIR 支持 Win32、UIA、VSTT,但是大部分的场景,都会直接基于 VSTT 来实现。只有少量 VSTT 无法实现的情况下,我们才会使用另外两个技术来实现,并封装在 DUIR 内部。
DUIR Framework 相关技术介绍的更多相关文章
- Asp.Net WebAPI及相关技术介绍(含PPT下载)
此PPT讲述了Asp.Net WebAPI及相关Web服务技术发展历史. 共80多页,Asp.Net WebAPI在讲到第36页的时候才会出现,因为这个技术不是凭空产生的,它有着自己的演变进化的历史. ...
- Winform开发的应用环境和相关技术介绍
随着时间的推移,Winform也算是能够坚持下来最久的技术之一了,它的昔日辉煌和现今的依旧活跃,导致了它依旧拥有者很庞大的用户群体,虽然目前很多技术日新月异的,曾经的ASP.ASP.NET WebFo ...
- Evernote相关技术介绍——mysql+lucene+tomcat
Evernote服务 我们的服务由以下几个组件组成. 分片(NoteStore) 分片是Evernote服务的核心单元,用于存储用户的笔记.每个分片最多可以支撑30万个Evernote用户,并包含 ...
- (转) SLAM系统的研究点介绍 与 Kinect视觉SLAM技术介绍
首页 视界智尚 算法技术 每日技术 来打我呀 注册 SLAM系统的研究点介绍 本文主要谈谈SLAM中的各个研究点,为研究生们(应该是博客的多数读者吧)作一个提纲挈领的摘要.然后,我 ...
- MVC中Controller控制器相关技术
第6章Controller相关技术 Controller(控制器)在ASP.NET MVC中负责控制所有客户端与服务器端的交互,并 且负责协调Model与View之间的数椐传递,是ASP.NET MV ...
- AOP技术介绍--(.Net平台AOP技术研究)
4.1.Net平台AOP技术概览 .Net平台与Java平台相比,由于它至今在服务端仍不具备与unix系统的兼容性,也不具备类似于Java平台下J2EE这样的企业级容器,使得.Net平台在大型的企业级 ...
- spring框架:(一) 技术说明(技术介绍,技术优势以及发展史等)
一.技术说明(技术介绍,技术优势以及发展史等) 1.1.什么是spring 1.2.spring由来(发展历程) 1.3.spring核心 1.4.spring优点 1.5.spring体系结构 1. ...
- .Net环境下的缓存技术介绍 (转)
.Net环境下的缓存技术介绍 (转) 摘要:介绍缓存的基本概念和常用的缓存技术,给出了各种技术的实现机制的简单介绍和适用范围说明,以及设计缓存方案应该考虑的问题(共17页) 1 概念 ...
- RAID技术介绍
RAID技术介绍 简介 RAID是一个我们经常能见到的名词.但却因为很少能在实际环境中体验,所以很难对其原理 能有很清楚的认识和掌握.本文将对RAID技术进行介绍和总结,以期能尽量阐明其概念. RAI ...
随机推荐
- Zookeeper运维
一.运维配置 参考:http://zookeeper.apache.org/doc/r3.4.6/zookeeperAdmin.html#sc_configuration 基础配置 ...
- ORACLE里锁有以下几种模式,v$locked_object,locked_mode
ORACLE里锁有以下几种模式: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusiv ...
- Xcode中的全局异常断点
一旦异常断点被添加,你可以鼠标右键选择 Edit Breakpoint 打开弹出菜单. 改变异常类型为Objective-C,这可以防止C++异常被捕获,你可能不想捕获这些. 因为通常情况下你的App ...
- R--线性回归诊断(一)
线性回归诊断--R [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 勿忘初心 无畏未来 作为一个初学者,水平有限,欢迎交流指正. 在R中线性回 ...
- Android For JNI(一)——JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序,使用C启动JAVA程序
Android For JNI(一)--JNI的概念以及C语言开发工具dev-c++,编写你的第一个C语言程序 当你的Android之旅一步步的深入的时候,你其实会发现,很多东西都必须去和framew ...
- Gradle 1.12用户指南翻译——第二十三章. Java 插件
其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...
- Java 继承Thread类和实现Runnable接口的区别
ava中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 在实际应用中,我 ...
- 【Matlab编程】matlab 画图
1. 不用截图工具就可以将图保存成图像格式,并且没有背景颜色:saveas(gcf ,'outputname','png/jpg'),第三项省略时默认为fig.m文件 2. 计算形如(-1)^2/ ...
- iOS 网络编程模式总结
IOS 可以采用三类api 接口进行网络编程,根据抽象层次从低到高分别为socket方式.stream方式.url 方式. 一 .socket 方式 IOS 提供的socket 方式的网络编程接口为C ...
- 10个精选的颜色选择器Javascript脚本及其jQuery插件
Color picker即颜色选择器使我们在web开发中可能经常用到的组件,今天我们特意精选了10个超酷的颜色选择器实现,其中包括了javascript脚本 实现及其传说中的jQuery插件实现 ...