tongxj80 发表于 2010-4-22 18:04:00

DevComponents.AdvTree node上的操作问题(已解决)

想在DevComponents.AdvTree 的某个node上点击一下鼠标,请问各位大侠,QTP如何写脚本?

[ 本帖最后由 tongxj80 于 2010-5-12 17:43 编辑 ]

TIB 发表于 2010-4-22 21:20:43

DevComponents.AdvTree 是.NET的控件吧?

tongxj80 发表于 2010-4-23 08:54:48

是的,是DotNetBar控件。

TIB 发表于 2010-4-23 09:30:14

可以参考这里描述的一些思路看能不能解决:
http://blog.csdn.net/Testing_is_believing/archive/2010/03/13/5377441.aspx
http://blog.csdn.net/Testing_is_believing/archive/2010/03/13/5377341.aspx

tongxj80 发表于 2010-4-23 10:50:28

谢谢TIB

谢谢。
另外下面这段代码,为啥执行完后一点反应都没有?是不是有地方弄错了?
Set TestTree=SwfWindow(" ").SwfWindow(" ").SwfObject("advTree1").Object
TestTree.SelectedNodeTestTree.Nodes.Item(0),Mouse

TIB 发表于 2010-4-23 20:34:06

是不是应该这样:
Set TestTree=SwfWindow(" ").SwfWindow(" ").SwfObject("advTree1").Object
TestTree.SelectedNode= TestTree.Nodes.Item(0)

tongxj80 发表于 2010-4-24 13:19:31

这样写法仍是一点反应都没有,总感觉哪里不对劲。我要做的事情是在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:27

改成这样呢?
TestTree.SelectedNodeTestTree.Nodes.Item(0),Code

如果这样也不行,我估计是SelectedNode只是将焦点设置在item上而已,要触发它,模拟用户的点击,可能还需要按一下空格键或回车键

tongxj80 发表于 2010-4-27 09:18:50

这样写仍是没用,应该是Code这个字段识别不到,eTreeAction是.net里的枚举,在VB/QTP中找不到。
另外,如果我将焦点设置在Item(0)上,那么“需要按一下空格键或回车键”,这个怎么做呢?最好能给出代码,谢谢!

[ 本帖最后由 tongxj80 于 2010-4-27 09:20 编辑 ]

TIB 发表于 2010-4-28 22:02:45

回复 9# 的帖子

可以用DeviceReplay来发送个按键出去

参考:
http://blog.csdn.net/Testing_is_believing/archive/2008/06/02/2504745.aspx

tongxj80 发表于 2010-5-10 11:12:26

回复 10# 的帖子

谢谢。最近在忙别的事情,若有问题,会再向您请教,谢谢。

tongxj80 发表于 2010-5-12 17:47:00

解决方法

今天在陈能技老师的帮助下,解决了这个问题:
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
页: [1]
查看完整版本: DevComponents.AdvTree node上的操作问题(已解决)