转载--如何做好.net自动化测试2

上一篇 / 下一篇  2017-12-01 15:27:36 / 个人分类:QTP识别对象

续上:http://www.51testing.com/index.php?uid-174770-action-viewspace-itemid-183675

七、      实例

    透过上面与大家分享的理论知识,现在我们先挑个“软柿子”捏捏,这个就是SwfTable。我们打开QTP的帮助文档,看到文档中正好提示支持这个控件,DevExpressXtraGrid。如果使用这个控件,你或许会发现某些Table的方法它是不支持的,因为QTP没封装得很彻底的缘故。

1,            我们添加这某个Table进对象库,而我们Spy出来的typeDevExpress.XtraGrid.GridControl这个控件。

2,             使用.net Windows Forms Spy,查看这个对象,或者查看源代码与网上搜索相关代码,不难发现这个对象下面有一个MainView或者Views的对象,它就是存放了大部分对象的一个“容器”。而我们在API中看到,这个MainView其实包括了3View类型:GridViewCardViewTreeView

3,             而我们通过下面代码获取这个View是属于什么类型:

Swfwindow().swfTable().Object.MainView.getType.name

4,             到这里,你如果看到的这个View类型是属于CardView,那么QTP.net插件

是没有封装这个的,它只封装了GridView。而CardView的最大特点就是Colum变成了Row,而Row变成了Colum.

5,     所以我们需要再一次把CardView这个View类型的方法与属性封装出来。

Public function GetCellPorp(SwftableObj,Row,Colunm,PropertyName)

  View=SwftableObj.Object.MainView.getType.name

  Select Case View

  '由于QTP支持了这个对象的方法,我们就直接使用它方法,如果还想

  Case "GridView"

    GetCellPorp=SwftableObj.GetCellProperty(Row,Colunm,PropertyName)

  Case "CardView"

    'CardView的特点就是Columnrou相反,但为了更好的使用,我们需要在封装的时候再倒过来,让它适合我们的感知。

    '再往下,我们需要分析出这个RowColumn的值,是字符串或是数字,如果是字符串需要做循环找出这个Column对象或者rowhandle

    'Code省略

    

     '接着我们需要在这个封装中添加进我们的PropertyName传参类型的分类

           Select Case PropertyName

           Case "Value"

           'Code省略

           Case "Colname"

           'Code省略

    End Select

    Case "TreeView"

           'Code省略

  End Select

End Function 

八、      结语

      熟悉web自动化的人,觉得Web很简单,也很好做,因为我们够了解它,也能很轻松了解到它的构造,能够得心应手的操作它。但面对一个CS程序,完全的看不到代码和不了解的黑盒子,不了解它是如何运作的情况下,让我们觉得CS的自动化离我们太远了,希望读完这个文章能让您有所收获。

   学习自动化测试是一个很漫长的过程,从理论到工具再深造理论再脱离工具的一个过程,除了项目进度关系要求使用工具外,我们应该多研究这个QTP是如何实现的,脱离它才是我们需要得到本事,试着去了解Window或者其它操作系统后台工作原理,离开了工具,你也能造出车来,这也是我们能在工作与项目组中处于不可替代的位置。


TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-10  
   1234
567891011
12131415161718
19202122232425
262728293031 

我的存档

数据统计

  • 访问量: 2795
  • 日志数: 2
  • 建立时间: 2017-12-01
  • 更新时间: 2017-12-01

RSS订阅

Open Toolbar