DUIR Framework 相关技术介绍

开发者在搭建界面自动化测试框架时,又或者在开发界面自动化控制的机器人时,往往需要对界面进行自动化的程序控制。而现在公司内部使用的杜尔自动化框架,就是一个封装了界面自动化控制逻辑的程序框架。基于该框架,开发者可以轻松、快速的控制各类程序的界面,这些界面可以包含 Windows 界面、浏览器界面。

五年前曾经写过一篇关于自动化测试的框架的文章:《搭建 WPF 上的 UI 自动化测试框架》。杜尔自动化框架,也是基于类似的技术,今天整理一下这个框架所使用的技术,在这里和大家简单分享一下。

杜尔的架构如下图所示:

对图中的所涉及技术,简单介绍如下:

最底层平台,是 Windows 平台,我们的框架只考虑该平台界面的自动化。

最上层,是框架的使用者、客户端,目前这个框架会集成在我公司的另一个智能客户端 VICA (VAT Intelligent Client Assistant)中。

再往下,就是 DUIR: Dben UI Robot Framework,中文名:杜尔机器人框架。

杜尔框架主要分为两层:下层是对 windows 下各类普通控件的查找、定位、封装;上层则是基于部分常见的场景,使用下层的控件来实现的各类场景逻辑的封装。其核心,自然是底层的控件封装。该层的实现,主要依赖三类技术:

  1. 直接使用句柄、消息机制等底层 Windows 机制来实现控制的控制。
  2. 使用 UI Automation for Managed Code 来实现控件自动化。
  3. 使用 VSTT(Visual Studio Testing Tool)& RPF 框架来实现控件自动化以及录制功能。

第 1 项技术:句柄消息机制,很常见,在此不赘述。

第 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 内部。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葡萄城控件技术团队

Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力)

系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS201...

1777
来自专栏我和未来有约会

Silverlight初级教程-概述

Silverlight初级教程 概述 Silverlight 是微软的一项新技术,正如之前的asp一样,微软为了保持其竞争力重新设计了他的框架推...

1916
来自专栏张善友的专栏

如何使用Microsoft技术栈

Microsoft技术栈最近有大量的变迁,这使得开发人员和领导者都想知道他们到底应该关注哪些技术。Microsoft自己并不想从官方层面上反对Silverlig...

1956
来自专栏deed博客

Windows XP生日快乐

1854
来自专栏张善友的专栏

.NET StockTrader 2.0 新版本

为了扩大高性能.NET应用程序在多种层次和平台上的应用范围以及促进Windows通讯基础(WCF)的应用,微软2008年10月7日发布了一个样本应用程序、应用指...

2277
来自专栏bboysoul

linux 下office软件推荐

最近要写毕业设计,很坑爹的是毕业设计一定要用office软件,都不知道为什么不能用markdown,学校真的像个婊子,在这破学校没有学到什么东西,还他妈的天天立...

1352
来自专栏张善友的专栏

Mix 08到来之前的Monolight Update

在Mix08到来之前Mono团队老大Miguel de Icaza's在blog上发布了Pre-Mix 08: Moonlight Updates。根据这篇bl...

1989
来自专栏张善友的专栏

来腾讯云开发者实验室 学习.NET

腾讯云开发者实验室为开发者提供了一个零门槛的在线实验平台,开发者实验室提供的能力: 零门槛扫码即可免费领取实验机器,支持使用自有机器参与,实验完成后支持保留实验...

2325
来自专栏张善友的专栏

即将到来的Powershell 2

在即将发布的Windows 7和其服务器产品Windows Server 2008 R2将内置PowerShell 2.0版本的解析器。与此同时,Windows...

2098
来自专栏大魏分享(微信公众号:david-share)

Red Hat混合云管平台-Cloud Forms-的前世今生

前面文章已经说过,红帽作为一家开源厂商,其所有企业化软件产品在社区都有源代码,混合云管平台Cloud Forms也不例外。今天,我们先来聊聊该产品的前世...

7448

扫码关注云+社区

领取腾讯云代金券