金蝶K3cloud产品的开发语言是.net和SilverLight插件(Microsoft Silverlight是一个跨浏览器的、跨平台的插件,为网络带来下一代基于.NETFramework的媒体体验和丰富的交互式应用程序。Silverlight提供灵活的编程模型,并可以很方便地集成到现有的网络应用程序中)结合产品特点我们首先要了解产品页面元素的详细情况:

图一:此页面是K3Cloud的物料页面

金蝶K3Cloud产品自动化解密-编程日记

图二:此页面采用了一个第三方工具UISpy(该工具能进行元素的识别。UISpy会将所有元素识别成一棵控件树,它能提供控件的详细信息,比如:Name, AutoID, Type, Position等属性和方法)。通过展示的属性和方法方便我们后续对自动化开展提供帮助和问题处理。

金蝶K3Cloud产品自动化解密-编程日记

通过上图的分析我们发现某些特殊属性例如:Name,AutomationId等为空,这些属性对于自动化测试控件查找、定位起到关键作用,所以我们和开发进行了沟通和处理。

图三:相同的页面不同的地方是AutomationId字段已经有值,这个值是经过和开发沟通后帮忙给增加的(其实这个值原本就存在的只是展示的属性不是放在AutomationId)。

金蝶K3Cloud产品自动化解密-编程日记

K3Cloud通过选型和实践我们采用White作为测试框架。

1、White简介

White是微软开发的一个开源工具,它提供了一套主要用于UI测试的框架。它适用于WinForm, WPF, Win32 以及SWT(java)的测试。

White是用C#开发的,但White除了支持.Net语言外,还支持Python和Ruby。(Python和Ruby是通过IronPython or IronRuby作为端口与.Net Framework结合。

2、White寻找控件机制

White是通过UI Automation API来找到某个窗口中的控件的。它通过遍历窗口中的所有控件来找到指定控件。那么如果有多个窗口打开时,怎么知道去哪个窗口寻找呢,是这样的,每次要寻找某个控件时,必须把它所属的窗口句柄传入,这样UIA通过window message与指

定窗口通信,进而去指定窗口寻找相应控件。

3、K3Cloud产品通过White寻找控件的方式:

通过控件的Name寻找

通过控件的AutomationID寻找

通过控件的类型寻找

通过索引寻找

有了以上的准备K3Cloud就可以开始着手自动化开发了。