码迷,mamicode.com
首页 > 其他好文 > 详细

Fitnesse + Powerslim + UI Automation框架下抽取UI操作方法的思路

时间:2015-02-15 18:08:01      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:

我们的自动化测试框架的Fitnesse + Powerslim,一般情况下会尽量避免在UI层面的操作,但是有些时候没有对应的命令行接口只能用UI去测试。

Powershell里面作UI测试用得比较多的库是UI Automation,但是Powershell的语句相对来说比较繁琐,例如:

Get-UIAWindow -ProcessName abc -Seconds 10 | Get-UIATab | Get-UIATabItem -Name "General"|Invoke-UIATabItemSelectItem -ItemName "General"

需要用管道由外到内获取和传递对象,一般有两到三个控件对象才找得到需要操作的控件,用全语句来查找有几个问题:

1. 重用率比较低。一般相同的结构下,同一层的控件前面的管道内容都是一样的,冗余的代码比较多。

2. 阅读不方便,特别在Fitnesse下。

3. 编写困难。每写一次可能要去找回以前类似的case作参照,或者运行UI Automation Spy去获取控件结构。

 

由于新feature的AT不得不用到UI Automation,我考虑了一下,决定用这样的思路去抽取出UI操作的方法:

首先,建一个XML文件,把所有控件的结构记录在里面,包括获取它要用的方法,传递的参数(Name, Id),结构就用XML的层级关系,以上面的语句为例,可以创建XML:

<abc method="Get-UIAWindow" ProcessName="FormGenerator" Seconds="10">
  <tab method="Get-UIATab">
    <General method="Get-UIATabItem" Name="General"/>
  </tab>
</abc>
每个结点的名称都是唯一的,这样XML里每个结点都与界面上的控件一一对应。建议以最外层UIA window为单位,每个UIAwindow建一个XML。
 
然后, 在Scenario Library里定义方法:
!|scenario|GetObject|node|
通过传入的控件名称找到XML里对应的结点,把结点的属性拼接成语句,所有父结点同理,然后拼接成一个完整的能获取到它的语句:
Get-UIAWindow -ProcessName abc -Seconds 10 | Get-UIATab | Get-UIATabItem -Name "General"
用invoke-expression可以执行语句获取到对象。
 
有了对象,可以给每一种操作(click, set text)定义一个方法:
!|scenario|SelectListItem|node|
|GetObject|@node|

在case里面我们直接调用这个方法去操作:

|SelectListItem|General|

这样,整个case就会相当整洁,没有太多的冗余,操作也一目了然。

关于XML的获取和维护,这里有个思路,但是还没有实现:可以在UI Automation自带的SPY工具作扩展,精简它获取到的控件结构,保留需要的信息,然后保存为我们需要的XML。

Fitnesse + Powerslim + UI Automation框架下抽取UI操作方法的思路

标签:

原文地址:http://www.cnblogs.com/bloghanchi/p/4293280.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!