FLY000 发表于 2010-9-16 16:21:40

childobjects方法得到的对象集合的顺序可能不是按照页面上从上到下的顺序排列的

Function GetCalculateNode()
        Dim i
        i = 1
        Set PlusCollection = GetPlusCollection()
        NumberOfPlus = PlusCollection.Count
        Do
                LastNum = GetReportNum()
                minusNum = GetMinusNum()
                CurrentCnt = unClickPlusNum + minusNum
                TxtOfPlus= GetTxt(i)
                IfInStr(1,UnExpandNodeNameList,TxtOfPlus,1)=0 Then
                        PlusCollection(unClickPlusNum).Click
                        CurrentNum = GetReportNum()
                        If CurrentNum>LastNum Then
                                Call CalculateReports(LastNum,CurrentNum)
                                i = i + CurrentNum-LastNum
                        End If
                else
                        unClickPlusNum = unClickPlusNum + 1                          
                End If
                Set PlusCollection = GetPlusCollection()
                NumberOfPlus = PlusCollection.Count
                i = i +1
        Loop Until CurrentCnt = NumberOfPlus
End Function

当i= 4,理论上是 【卫统1—7表】 前面的加号,但是却点击了【卫统1—6表】前的加号;

也就是说,使用childobjects获取到的对象集合,不一定是页面上从上到下的顺序排列的

这样的情况怎么办才好? 使用dom方法吗?

[ 本帖最后由 FLY000 于 2010-9-16 16:32 编辑 ]

skyzhu 发表于 2010-9-16 16:37:40

脚本好复杂。。。全变量和未知函数真没法看
childobjects顺序是有的,而且固定的,但并不是根据上下左右来的,只是和上下左右这样的顺序差不多而已
另外每次循环都更新对象集,里面的东西也会变的吧
Set PlusCollection = GetPlusCollection()

FLY000 发表于 2010-9-16 18:27:46

是的,每次展开需要展开的节点后,必须重新获取对象集

但是 如果 childobjects获取的对象集是有顺序的,那么也应该不是这里有影响吧?



【而且固定的,但并不是根据上下左右来的,只是和上下左右这样的顺序差不多而已】

这句话很含糊,还是没有确定的答案;:lol

到底是个什么规则来排的?

[ 本帖最后由 FLY000 于 2010-9-16 18:28 编辑 ]

skyzhu 发表于 2010-9-17 10:19:21

顺序就是没准确答案,问开发QTP的人。。。

展开新节点以后,可能重新获取对象集的顺序和个数变了,这个就要自己去慢慢调试了
页: [1]
查看完整版本: childobjects方法得到的对象集合的顺序可能不是按照页面上从上到下的顺序排列的