您的位置:首页 > 编程语言 > Java开发

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

2017-05-24 09:04 393 查看
          使用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后的对象层层递进。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  自动化测试 java qtp