QTP利用原生态对象获取JavaTable列排序类型示例

          使用QTP测试Java Swing的CS程序中,JavaTable是非常常见的控件,QTP提供了很多常用的方法,如SelectRow、Click、ClickCell等。但有时候感觉还是力不从心,特别是一些比较奇怪的需求。必须最近解决的一个问题,一个JavaTable的表格,需要测试其排序的准确性,那么首先就要知道是什么排序方式,降序、升序、还是没有排序。功能如下图。

    告警ID列是我们需要测试的排序列,默认是没有排序的,点击一次为升序,点击两次为降序,再次点击更换排序类型,右键取消排序。

   如果要确定下面行的排序正确,首先要获取该列的排序类型。一种办法就是确定点击次数,用操作确定排序类型,感觉这种方法还是有点不可靠。通过实践发现如下两个办法。

   一、用原生态的API函数。

    脚本如下,在升序情况下执行结果如下。

   

   注意defaultIcon字段。如果是降序或者没有排序执行结果如下。

     这种方法类似于获取列头上的剪头类型,对获取的Render再做字符串的解析,获得defaultIcon的值,进行区分。

    对脚本的说明。

    //描述性编程,获取表格对象,忽略index的识别,偷懒了。

    Set alarmTable=MainWindow.JavaTable("index:=0")  

   //通过JavaTable的原生态对象获得表格列头

     Set alarmTableHeader=alarmTable.Object.getTableHeader()

  //通过一系列原生态函数获取该列的Renderer 
   set headerRenderer=alarmTableHeader.getColumnModel().getColumn(0).getHeaderRenderer()

   二、通过源码的解析获取排序类型。

    谁说黑盒测试人员不需要看系统的源代码?如果要自动化测试肯定要参考源码。上面这个方法还是有点花哨了,找了一下开发的同事,看了一下源码,具体就是要看这个JavaTable的类实现,有没有什么函数可以获取排序类型的方法。(类名可以通过alarmTable.Object.getClass().toString()得到)

     同事帮忙看了十分钟,找到如下信息。

       JSortableTable就是该表格,看到有getSortType的方法,是不是public的呢?

    

           运气不错,使用效果如下。

   

    这是升序的结果,降序、无排序都可以获取,这种方法更直接。

  

    总结:使用原生态对象的方法可以做很多的事情,这些函数可以在QTP的Native中看,我更推荐使用Java API文档查,更全面, 还是可以通过get后的对象层层递进。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值