51Testing软件测试论坛

标题: 架构树,出现多个重复名称.如何解决! [打印本页]

作者: szwilliam    时间: 2007-8-1 10:38
标题: 架构树,出现多个重复名称.如何解决!
我现在遇到这样的一个问题,我想选择那棵树中的任意一个位置.
比如我想选中树中的 总部>华南区>深圳公司>销售部.可是广州公司下面也包含销售部.这样用QTP会放的时候就不知道是那个对象了,报的错误是说对象不唯一.
环境:windows2003 servers    qtp9.0
另外我是用的描述性编程去描述这个对象的,,描述了它的 html tag,innertext
如何我把那个对象的 index属性加上,这样就可以区分了,,但是这样我的程序就不够通用了,以后我都要知道我的那棵树中有多少了销售部,我要选中的那个index是多少?
请教一下大家!!希望大家可以提供好的解决的办法,,与大家一起学习,一起进步!!
作者: yuandjing    时间: 2007-8-1 17:40
树形结构我没有测过,楼下的帮忙
作者: wuyuzimu    时间: 2007-8-1 17:49
帮楼主顶贴,我还是新手,不知道怎么解决
作者: jackymail    时间: 2007-8-1 18:09
标题: 把href的描述加上
应该就能识别的,同样的名字对对应的href肯定不一样。
作者: wonder    时间: 2007-8-1 18:11
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.
作者: danmy    时间: 2007-8-1 22:29
关注中,我有同样的需求哈,呵呵。而且还发现有时会有对象识别错误,比如webelement("innertext:=D栏目","index:=1").click,点击在"innertext:=栏目"的Webelement上了
作者: ppent    时间: 2007-8-2 11:17
树状结构的对象识别问题确实比较麻烦,我现在也没找到好方法,但用index来识别不太好,因为index也可能会变动的。
在qtp的对象识别中,好像并没有按照层次关系的,而是整个树中的内容都放在同一层的,这样造成了识别上的麻烦。
wonder朋友说得Expand方法没用过,试一试。
jackymail说得href属性好像没有,用innerhtml、outerhtml行不行?
希望有经验的朋友也来聊聊。
作者: ppent    时间: 2007-8-2 11:45
例如有这样一颗树,如何点击每个节点前面的+号,展开对应的节点?
对于每个+号来说,除了index之外,其属性是完全一样的。
作者: xueqinzhaoqing    时间: 2007-8-2 13:18
我也遇到这样的问题了,还是希望高手们都来解答这个问题。希望都能关注此帖
作者: wonder    时间: 2007-8-2 13:23
标题: 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
作者: jackymail    时间: 2007-8-2 13:50
标题: 你这个题目可以明确地告诉你,无解
给你解释一下原因:
QTP在识别对象的时候是先是别父类对象,然后识别子类对象,你的销售部作为子类,无论广州分公司还是深圳分公司,他们其实和整个华南区,乃至总部都是并列的,也就是说它们之间没有父子关系。你的总部下面的任何一个名字重复,qtp都无法识别(用描述性编程的方式)

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




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