使用 RFT 对 Dojo Web 应用进行自动化测试(3)
 
- UID
- 1066743
|

使用 RFT 对 Dojo Web 应用进行自动化测试(3)
疑难问题解决:用 Find 方法找到 Dojo 矢量图形对象Dojo 中包含专门针对 web 矢量图开发的控件包 -- "dojox.charting",里面封装了很多功能完善的矢量图控件, 比如饼状图,柱状图,由于这些矢量图形封装在固定的容器中,RFT 在识别这些矢量图形的时候会遇到困难,只能识别到矢量图形之上的封装容器,因此无法达到想要的测试效果。要解决这个问题,我们必须使用继承在 class com.rational.test.ft.object.interfaces. 这个类中的 Find 方法。
Dojo 的矢量图形在不同的浏览器中是封装在不同的 HTML 标签下,针对 Firefox 和 IE10,它们封装在 SVG 标签下;针对 IE8 和 IE9,它们封装于 VML 标签下。
案例介绍下面我们给出一个用 Find 方法找到封装于 SVG 标签下的 Dojo 柱装图形的实例:
识别 Dojo 柱装图(图 10)中一个序列条(图 10 红色框内)作为测试对象。
图 10.Dojo bar chart 柱状图 - 使用 Firefox 插件 Firebug 发现我们要找的对象在 SVG 标签下的第一层 (图 11)。图 11.bar chart html 代码

图 11 绿色框内的 id=brokenrulebar 是 HTML 代码中有唯一 id 标识的最底层的 widget。我们可以通过 RootTestObject 操作遍历对象找到这个具有唯一标识的对象。
- RootTestObject 遍历子控件RootTestObject 是一个完全脱离对象库的操作,运用 Find 方法中的 atDescendant 查找应用程序中所有子节点对象并返回id=brokenrulebar的对象。
1
2
| TestObject container = RootTestObject.getRootTestObject().find(atDescendant(".class",
"Html.DIV", ".id", "brokenRulesBar"))[0];
|
因为 Find 方法返回的是数组,这里我们返回数组中的唯一的第一个值。
- 查找测试脚本中所需要的节点:图 11 红色框内标签下是我们所需要测试对象的 HTML 代码,在得到了节点id=brokenrulebar后,运用 getChinldren()的方法来获取最终我们需要的这个测试对象的节点。
通关观察代码的层级关系,<Rect /> 这个标签可以定位到id=brokenrulebar这一层之后的第二个子节点的第一层第一个孩子的第二个值。
代码如下:
1
2
3
4
5
| //id= brokenRulesBar 的第二个子节点的第一层的第一个孩子
TestObject vGroup = container.getChildren()[1].getChildren()[0].getChildren()[0];
//获取第二个值 强制转换测试对象为 GUI 对象
GuiTestObject chart = (GuiTestObject)vGroup.getChildren()[1];
|
这样我们就能够实现识别封装在固定容器中的 Dojo 矢量图形。
|
|
|
|
|
|