51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5526|回复: 15
打印 上一主题 下一主题

[原创] QTP中怎样识别JavaTree的节点名?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-9-4 09:26:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有Java-addin,QTP9.1
可以对javatree进行展开收缩等操作,但是没法获得节点名?spy了一下,value是空的。
有没有什么方法可以识别节点名吗?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2007-9-4 09:39:28 | 只看该作者
    先用 TreeView的 Expand属性  展开,然后找到合适的Function 得到 需要的Node 即可
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2007-9-4 09:54:00 | 只看该作者
    学习学习 ,谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2007-9-4 09:58:41 | 只看该作者
    谢谢,能说的详细点吗?
    我可以展开tree,但是要获得node名,用getroproperty返回属性value,依然是空的?spy出来的结果,javatree中没有任何一个属性是node名
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-9-4 10:39:03 | 只看该作者
    呵呵,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 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2007-9-4 10:40:46 | 只看该作者
    非常感谢楼上的,我研究一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2007-9-4 10:46:33 | 只看该作者
    另yabest的《识别和操作对象的原理》写的也很好,希望大家都读一下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2007-9-4 15:59:48 | 只看该作者
    按照yabest的方法试了下,还是不行,运行到
    childCount =  CInt(treeModel.getChildCount(curParentNode))
    就会报错
    怀疑是不是curParentNode没有定义,不过运行
    CInt(treeModel.getChildCount())
    依然报错
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2007-9-4 16:13:07 | 只看该作者
    哎,我是把各个步骤的方法告诉你,你要自己组织循环遍历各个节点的脚本啊
    比如curParentNode这个变量,开始时你要把rootNode传给它,不然这个变量就没定义了
    然后查第三层节点时,你就要把它相应的第二层父亲节点传给curParentNode了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2007-9-4 16:16:59 | 只看该作者
    好强呀
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-9-4 16:17:22 | 只看该作者
    很牛也
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2007-9-4 16:24:41 | 只看该作者
    原帖由 yabest 于 2007-9-4 16:13 发表
    哎,我是把各个步骤的方法告诉你,你要自己组织循环遍历各个节点的脚本啊
    比如curParentNode这个变量,开始时你要把rootNode传给它,不然这个变量就没定义了
    然后查第三层节点时,你就要把它相应的第二层父亲 ...

    啊哦,这样啊,茅塞顿开,我再去试试
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
     楼主| 发表于 2007-9-4 16:35:43 | 只看该作者
    取到了包含节点名的字串了,哈哈,谢谢yabest兄
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2007-10-16 15:18:39 | 只看该作者
    学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2010-3-11 15:37:15 | 只看该作者
    很强悍
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2015-1-9 10:53:03 | 只看该作者
    太有用了。。。解决了我的困难
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-6-25 10:48 , Processed in 0.073212 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表