51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 7206|回复: 11
打印 上一主题 下一主题

[原创] DevComponents.AdvTree node上的操作问题(已解决)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-4-22 18:04:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想在DevComponents.AdvTree 的某个node上点击一下鼠标,请问各位大侠,QTP如何写脚本?

[ 本帖最后由 tongxj80 于 2010-5-12 17:43 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-4-22 21:20:43 | 只看该作者
DevComponents.AdvTree 是.NET的控件吧?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-4-23 08:54:48 | 只看该作者
是的,是DotNetBar控件。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-4-23 09:30:14 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2010-4-23 10:50:28 | 只看该作者

谢谢TIB

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

使用道具 举报

该用户从未签到

6#
发表于 2010-4-23 20:34:06 | 只看该作者
是不是应该这样:
Set TestTree=SwfWindow(" ").SwfWindow(" ").SwfObject("advTree1").Object
TestTree.SelectedNode  = TestTree.Nodes.Item(0)
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 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.
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-4-25 09:36:27 | 只看该作者
改成这样呢?
TestTree.SelectedNode  TestTree.Nodes.Item(0),Code

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

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2010-4-27 09:18:50 | 只看该作者
这样写仍是没用,应该是Code这个字段识别不到,eTreeAction是.net里的枚举,在VB/QTP中找不到。
另外,如果我将焦点设置在Item(0)上,那么“需要按一下空格键或回车键”,这个怎么做呢?最好能给出代码,谢谢!

[ 本帖最后由 tongxj80 于 2010-4-27 09:20 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-4-28 22:02:45 | 只看该作者

回复 9# 的帖子

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

参考:
http://blog.csdn.net/Testing_is_ ... /06/02/2504745.aspx
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2010-5-10 11:12:26 | 只看该作者

回复 10# 的帖子

谢谢。最近在忙别的事情,若有问题,会再向您请教,谢谢。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 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 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-21 22:16 , Processed in 0.085326 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表