51Testing软件测试论坛

标题: DevComponents.AdvTree node上的操作问题(已解决) [打印本页]

作者: tongxj80    时间: 2010-4-22 18:04
标题: DevComponents.AdvTree node上的操作问题(已解决)
想在DevComponents.AdvTree 的某个node上点击一下鼠标,请问各位大侠,QTP如何写脚本?

[ 本帖最后由 tongxj80 于 2010-5-12 17:43 编辑 ]
作者: TIB    时间: 2010-4-22 21:20
DevComponents.AdvTree 是.NET的控件吧?
作者: tongxj80    时间: 2010-4-23 08:54
是的,是DotNetBar控件。
作者: TIB    时间: 2010-4-23 09:30
可以参考这里描述的一些思路看能不能解决:
http://blog.csdn.net/Testing_is_ ... /03/13/5377441.aspx
http://blog.csdn.net/Testing_is_ ... /03/13/5377341.aspx
作者: tongxj80    时间: 2010-4-23 10:50
标题: 谢谢TIB
谢谢。
另外下面这段代码,为啥执行完后一点反应都没有?是不是有地方弄错了?
Set TestTree=SwfWindow(" ").SwfWindow(" ").SwfObject("advTree1").Object
TestTree.SelectedNode  TestTree.Nodes.Item(0),Mouse
作者: TIB    时间: 2010-4-23 20:34
是不是应该这样:
Set TestTree=SwfWindow(" ").SwfWindow(" ").SwfObject("advTree1").Object
TestTree.SelectedNode  = TestTree.Nodes.Item(0)
作者: tongxj80    时间: 2010-4-24 13:19
这样写法仍是一点反应都没有,总感觉哪里不对劲。我要做的事情是在item(0)上点击一下。
selectedNode是dotnetbar控件支持的方法:Public Sub SelectedNode( _
   ByVal node As Node, _
   ByVal action As eTreeAction _
)
Public Enum eTreeAction
   Inherits Enum
Member                 Description
Keyboard             The event was caused by a keystroke.  
Mouse                  The event was caused by a mouse operation.  
Collapse              The event was caused by the Node collapsing.  
Expand                The event was caused by the Node expanding.  
Code                    The event is caused programmatically from user code.
作者: TIB    时间: 2010-4-25 09:36
改成这样呢?
TestTree.SelectedNode  TestTree.Nodes.Item(0),Code

如果这样也不行,我估计是SelectedNode只是将焦点设置在item上而已,要触发它,模拟用户的点击,可能还需要按一下空格键或回车键
作者: tongxj80    时间: 2010-4-27 09:18
这样写仍是没用,应该是Code这个字段识别不到,eTreeAction是.net里的枚举,在VB/QTP中找不到。
另外,如果我将焦点设置在Item(0)上,那么“需要按一下空格键或回车键”,这个怎么做呢?最好能给出代码,谢谢!

[ 本帖最后由 tongxj80 于 2010-4-27 09:20 编辑 ]
作者: TIB    时间: 2010-4-28 22:02
标题: 回复 9# 的帖子
可以用DeviceReplay来发送个按键出去

参考:
http://blog.csdn.net/Testing_is_ ... /06/02/2504745.aspx
作者: tongxj80    时间: 2010-5-10 11:12
标题: 回复 10# 的帖子
谢谢。最近在忙别的事情,若有问题,会再向您请教,谢谢。
作者: tongxj80    时间: 2010-5-12 17:47
标题: 解决方法
今天在陈能技老师的帮助下,解决了这个问题:
SwfWindow("Form1").Activate
NodeCount = SwfWindow("Form1").SwfObject("advTree1").Object.Nodes.Count
For I = 0 to NodeCount - 1 ' 访问第一层的所有Node
    NodeBounds =SwfWindow("Form1").SwfObject("advTree1").Object.Nodes.Item(i).Bounds
    arrBounds = Split(NodeBounds,",")
xPos = Split(arrBounds(0),"=")
' Print xPos(1)
    x =  xPos(1)
    yPos = Split(arrBounds(1),"=")
' Print yPos(1)
   y = yPos(1)
   SwfWindow("Form1").SwfObject("advTree1").Click x,y ' 真正执行点击操作
Next




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