51Testing软件测试论坛

标题: QTP9.0对WinTreeView控件的操作 [打印本页]

作者: jifeng    时间: 2007-11-2 15:19
标题: QTP9.0对WinTreeView控件的操作
有一个WinTreeView的对象,可以实现对各子节点的操作,现在在各子节点前加了一个眼睛,笔,分别控制图层的可见和可编辑状态,就像在photoshop中对图层控制一样的功能,且各个图层的相对位置随机可变。QTP捕获不到对这两个的操作,对象也抓不出来,请问各位达人有没有好的办法啊!

借助jmy_1981提供的思路以及查找的资料,自己写了一个函数,实现了对眼睛和笔以及复选框的操作。代码如下:


Call Fun (Window("Geoway - [230-2]").WinTreeView("SysTreeView32"),"基本农田保护图斑",2)   '传入节点的text,1=点击眼睛,2=点击笔或复选框

'对图层眼睛,笔,复选框的控制函数
Sub Fun(ObjStr,NodeName,Flog)'ObjStr=树型结构的对象字符串;NodeName=操作的节点名;Flog=操作的对象(眼睛,笔,复选框)

        Dim NodePath      '节点的名字
        Dim TreeArray()  '存放树的节点l
        Dim NodeCount   '树结构的节点数
       
        NodeCount=ObjStr.GetItemsCount
       
        ReDim TreeArray(NodeCount) ' 动态定义数组,动态存放树的节点名称
       
        For i=0 to NodeCount-1        '将节点存放到数组
       
                TreeArray(i)=cstr(ObjStr.GetItem(i))
       
        Next

        For j=0 to NodeCount-1        '检索节点位置
       
                If  TreeArray(j)=cstr(NodeName) Then
       
                        m=j
                               
                        Exit for          '检索到第一个匹配的节点跳出for循环
                       
                End If
               
        Next
       
        If m<24 Then     '判断是否要拉动滚动条来控制图层
       
                Select  Case Flog
       
                        Case "1"  '所选眼睛的坐标
                                x=45
                                y=13+22*m
                               
                        Case "2"  '所选笔,复选框的坐标
                                x=65
                                y=13+22*m
       
                End Select
       
                        ObjStr.Click x,y  '点击操作
                       
        else

                NodePath=ObjStr.GetItemProperty (m,"path")  '得到所选节点的全路径
               
                ObjStr.Select NodePath

                Select  Case Flog
       
                        Case "1"  '所选眼睛的坐标
                           ObjStr.Click 47,541
                               
                        Case "2"  '所选笔,复选框的坐标
                           ObjStr.Click 65,540
       
                End Select
       
        End If
   
End Sub

[ 本帖最后由 jifeng 于 2007-11-20 14:32 编辑 ]
作者: xiaoyaoke    时间: 2007-11-2 15:56
低级模式下(Low Lever Recording)下试试,应该可以操作吧
作者: jmy_1981    时间: 2007-11-2 16:59
标题: 有第三方插件的
如题

QTP有一个叫mouseoperacion的dll,楼上知道怎么添加附件吗?(在回复里)

>>>我会了
ActivateCust.txt 是一个人工写的方法,写得不是很完善,请多指教。
MouseOperations.dll 是插件。

[ 本帖最后由 jmy_1981 于 2007-11-2 17:01 编辑 ]
作者: jifeng    时间: 2007-11-2 21:56
原帖由 jmy_1981 于 2007-11-2 16:59 发表
如题

QTP有一个叫mouseoperacion的dll,楼上知道怎么添加附件吗?(在回复里)

>>>我会了
ActivateCust.txt 是一个人工写的方法,写得不是很完善,请多指教。
MouseOperations.dll 是插件。


达人能否介绍一下具体怎么用阿,我搞QTP时间不长,不是太清楚,谢谢
作者: jifeng    时间: 2007-11-5 16:24
哪位可以解释一下阿
作者: jmy_1981    时间: 2007-11-5 17:48
标题: lz要先注册dll再使用……
如题。

1.在C:\Program Files\Mercury Interactive下建立一个目录叫CSOSolution
2.把MouseOperations.dll拷贝到C:\Program Files\Mercury Interactive\CSOSolution下
3.注册这个dll(regsvr32.exe C:\Program Files\Mercury Interactive\CSOSolution\MouseOperations.dll)
4.把ActivateCust.txt里面的方法添加到qtp里面。

希望有帮助。
作者: jifeng    时间: 2007-11-14 17:28
原帖由 jmy_1981 于 2007-11-5 17:48 发表
如题。

1.在C:\Program Files\Mercury Interactive下建立一个目录叫CSOSolution
2.把MouseOperations.dll拷贝到C:\Program Files\Mercury Interactive\CSOSolution下
3.注册这个dll(regsvr32.exe C:\Program F ...



谢谢,此方法确实可以实现点击操作。我发现此方法是根据节点的长度来获取一个坐标,然后实现点击,如当节点是2个汉字时点击的是眼睛,是4个汉字时点击得是笔,5个以上就是点击得节点。
还有就是我发现只有一个SendDoubleClick方法,还有没有其他的方法,我试过SendClick但不支持。那个dll文件有没有一个说明阿?

再次谢谢兄台的帮助
作者: jifeng    时间: 2007-11-20 14:40
大家帮我看看有没有需要改进的地方啊。现在整个函数运行一次需要3.6秒(30个节点),因为软件对这个操作非常频繁,能不能用其他的方式来缩减一些运行时间啊?

各位指教!




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