51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2412|回复: 10
打印 上一主题 下一主题

[原创] 架构树,出现多个重复名称.如何解决!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-8-1 10:38:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在遇到这样的一个问题,我想选择那棵树中的任意一个位置.
比如我想选中树中的 总部>华南区>深圳公司>销售部.可是广州公司下面也包含销售部.这样用QTP会放的时候就不知道是那个对象了,报的错误是说对象不唯一.
环境:windows2003 servers    qtp9.0
另外我是用的描述性编程去描述这个对象的,,描述了它的 html tag,innertext
如何我把那个对象的 index属性加上,这样就可以区分了,,但是这样我的程序就不够通用了,以后我都要知道我的那棵树中有多少了销售部,我要选中的那个index是多少?
请教一下大家!!希望大家可以提供好的解决的办法,,与大家一起学习,一起进步!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-8-1 17:40:38 | 只看该作者
树形结构我没有测过,楼下的帮忙
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-8-1 17:49:25 | 只看该作者
帮楼主顶贴,我还是新手,不知道怎么解决
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-8-1 18:09:08 | 只看该作者

把href的描述加上

应该就能识别的,同样的名字对对应的href肯定不一样。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-8-1 18:11:07 | 只看该作者
I do not know what type of your object lies, Windows or IE?
Here is a VB function "Expand" you can use for treeview.
If your path  like总部>华南区>深圳公司>销售部 is single,  this function can expand tree step by step .
and finally, use object.select to choose your final object.
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-8-1 22:29:44 | 只看该作者
关注中,我有同样的需求哈,呵呵。而且还发现有时会有对象识别错误,比如webelement("innertext:=D栏目","index:=1").click,点击在"innertext:=栏目"的Webelement上了
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-8-2 11:17:33 | 只看该作者
树状结构的对象识别问题确实比较麻烦,我现在也没找到好方法,但用index来识别不太好,因为index也可能会变动的。
在qtp的对象识别中,好像并没有按照层次关系的,而是整个树中的内容都放在同一层的,这样造成了识别上的麻烦。
wonder朋友说得Expand方法没用过,试一试。
jackymail说得href属性好像没有,用innerhtml、outerhtml行不行?
希望有经验的朋友也来聊聊。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2007-8-2 11:45:15 | 只看该作者
例如有这样一颗树,如何点击每个节点前面的+号,展开对应的节点?
对于每个+号来说,除了index之外,其属性是完全一样的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-8-2 13:18:56 | 只看该作者
我也遇到这样的问题了,还是希望高手们都来解答这个问题。希望都能关注此帖
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-8-2 13:23:15 | 只看该作者

Here is a function for your reference,

Here is a function for your reference, hope this will be helpful:

Public Sub OptionalExpandSelect (obj, TreePath)
If Trim(TreePath) <> "" Then

        PathArray = Split(TreePath, "->", -1, 1)
        TempPath = PathArray(0)
        For i = 1 to UBOUND(PathArray)
                obj.Expand TempPath
                TempPath = TempPath & "->" & PathArray(i)
        Next
        obj.Select TreePath

End If
End Sub
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2007-8-2 13:50:47 | 只看该作者

你这个题目可以明确地告诉你,无解

给你解释一下原因:
QTP在识别对象的时候是先是别父类对象,然后识别子类对象,你的销售部作为子类,无论广州分公司还是深圳分公司,他们其实和整个华南区,乃至总部都是并列的,也就是说它们之间没有父子关系。你的总部下面的任何一个名字重复,qtp都无法识别(用描述性编程的方式)

qtp如何才能识别?
对象库。只有对象库的方式才能识别。当用普通属性和辅助属性都不能识别对象的时候,qtp就启动了ordinal功能,给这些对象增加了index或者creation time。这样在同一个父类对象上的属性完全相同的子对象才能够被区分。
为什么说他们属性完全相同:广州销售部和深圳销售部
你可以打开html代码看一下,之所以你的程序能够操作区分这两个对象,因为它有html id或者value的属性。这两个属性值在程序里面是不同的,可是qtp恰恰无法识别你的webelement中的这两个属性。所以只剩下其余相同部分的属性。所以相同。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-8 04:32 , Processed in 0.077086 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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