51Testing软件测试论坛

标题: QTP中怎样识别JavaTree的节点名? [打印本页]

作者: saintlord    时间: 2007-9-4 09:26
标题: QTP中怎样识别JavaTree的节点名?
有Java-addin,QTP9.1
可以对javatree进行展开收缩等操作,但是没法获得节点名?spy了一下,value是空的。
有没有什么方法可以识别节点名吗?
作者: walker1020    时间: 2007-9-4 09:39
先用 TreeView的 Expand属性  展开,然后找到合适的Function 得到 需要的Node 即可
作者: cherubim    时间: 2007-9-4 09:54
学习学习 ,谢谢
作者: saintlord    时间: 2007-9-4 09:58
谢谢,能说的详细点吗?
我可以展开tree,但是要获得node名,用getroproperty返回属性value,依然是空的?spy出来的结果,javatree中没有任何一个属性是node名
作者: yabest    时间: 2007-9-4 10:39
呵呵,JavaTree,很麻烦的,有你苦头吃!我都写了好多脚本来处理JavaTree。

本来JavaTree的tree content属性里包含各节点的名称路径的,可以由此得到节点名,
但是JavaTree一般经过开发封装了,节点名无法直接得到,QTP查询到的tree content只有数字路径。

所以只能通过JavaTree的自身接口,象开发人员一样来访问树对象和节点对象。

自身接口原理,你可以看我的文章《QTP识别和操作对象的原理》[url]http://bbs.51testing.com/thread-87074-1-1.html [/url]

我给你提供一些基础脚本,你可以试试用这些脚本来实现你的需求。
可能树的封装不一样,下面的方法还是无法得到节点名的话,那你找你们开发,然后用他们的自身接口来实现。

'取得treeModel对象和根节点对象
Set treeModel = treeObject.object.getModel()
set roottNode = treeModel.getRoot()

'得到子孙节点的方法
childCount =  CInt(treeModel.getChildCount(curParentNode))
For childIndex = 0  to childCount-1
  Set childNode =  treeModel.getChild(curParentNode, childIndex)
Next

'判断树的类别
toolkitClass = treeObject.GetROProperty("toolkit class")
If InStr(toolkitClass, "IlpTree") > 0 Then
        treeType = "IlpTree"
ElseIf InStr(toolkitClass, "UTreeView$UExplorerTree") > 0 Then
        treeType = "ExplorerTree"
Else
        treeType = "JTree"
End If

'根据树的类别,得到节点的名称
If treeType ="IlpTree" Then
        childNodeName = childNode.getIlpObject().getLabel()
ElseIf treeType="ExplorerTree" Then
        childNodeName = childNode.getNode.getDisplayName()
Else
        childNodeName = childNode.getUserObject().toString()
End If

[ 本帖最后由 yabest 于 2007-9-4 10:56 编辑 ]
作者: saintlord    时间: 2007-9-4 10:40
非常感谢楼上的,我研究一下
作者: saintlord    时间: 2007-9-4 10:46
另yabest的《识别和操作对象的原理》写的也很好,希望大家都读一下
作者: saintlord    时间: 2007-9-4 15:59
按照yabest的方法试了下,还是不行,运行到
childCount =  CInt(treeModel.getChildCount(curParentNode))
就会报错
怀疑是不是curParentNode没有定义,不过运行
CInt(treeModel.getChildCount())
依然报错
作者: yabest    时间: 2007-9-4 16:13
哎,我是把各个步骤的方法告诉你,你要自己组织循环遍历各个节点的脚本啊
比如curParentNode这个变量,开始时你要把rootNode传给它,不然这个变量就没定义了
然后查第三层节点时,你就要把它相应的第二层父亲节点传给curParentNode了
作者: bobile    时间: 2007-9-4 16:16
好强呀
作者: bobile    时间: 2007-9-4 16:17
很牛也
作者: saintlord    时间: 2007-9-4 16:24
原帖由 yabest 于 2007-9-4 16:13 发表
哎,我是把各个步骤的方法告诉你,你要自己组织循环遍历各个节点的脚本啊
比如curParentNode这个变量,开始时你要把rootNode传给它,不然这个变量就没定义了
然后查第三层节点时,你就要把它相应的第二层父亲 ...

啊哦,这样啊,茅塞顿开,我再去试试
作者: saintlord    时间: 2007-9-4 16:35
取到了包含节点名的字串了,哈哈,谢谢yabest兄
作者: hdm191    时间: 2007-10-16 15:18
学习了
作者: haiwa957    时间: 2010-3-11 15:37
很强悍
作者: 白51011    时间: 2015-1-9 10:53
太有用了。。。解决了我的困难




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2