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后的对象层层递进。
告警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反射根据属性名获取对象值和类型代码
- 委托示例(利用委托对不同类型的对象数组排序)
- 对象最小JAVA对象排序之获取最小负载数
- 利用反射机制动态获取对象属性名称及数据类型
- Java利用反射来获取一个方法的 范型化参数 Vector<Integer>的类型
- java例程练习(对象类型数据的排序)
- 利用Javassist获取Java类中的方法参数名、参数类型、方法访问类型
- Java中利用比较器对一个对象的相关属性的排序
- java获取对象属性类型、属性名称、属性值
- JAVA对象排序之获取最小负载数
- java利用反射获取对象类名以及对象属性名
- 利用反射机制动态获取对象属性名称及数据类型
- Java -- 利用反射 操作任意数组,包括对象数组 和 基本数据类型的数组
- 利用QTP TextUtil对象获取图片验证码
- java 用getClass()获取对象的类型类
- Java利用反射来获取一个方法的 范型化参数 Vector<Integer>的类型
- java List Collections.sort 排序 支持 对象属性 普通数据类型
- java例程练习(对象类型数据的排序)
- Java利用反射来获取一个方法的 范型化参数 Vector<Integer>的类型