首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

使用 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 矢量图形。
返回列表