51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4143|回复: 14
打印 上一主题 下一主题

[原创] 新人请教:如何对WinTreeView 的一个节点右键点击?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-2-28 17:28:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
小弟刚开始学习QTP测试C/S程序,遇到一个难题
我在WinTreeView 控件中选择了一个节点,想右键点击它打开右键菜单,但是现在我不知道这个节点的坐标

例如,
Window("test_window").WinTreeView("TTreeView").type "test1"
Window("test_window").WinTreeView("TTreeView").Click x, y, micRightBtn
这个x,y无法得到,不加坐标又不能点到正确的位置

于是我使用下面的代码:
Window("test_window").WinTreeView("TTreeView").type "test1"
Dim x,y
x=Window("test_window").WinTreeView("TTreeView").GetItemProperty("test1",abs_x)
y=Window("test_window").WinTreeView("TTreeView").GetItemProperty("test1",abs_y)
Window("test_window").WinTreeView("TTreeView").Click x, y, micRightBtn

但是运行到 dim下面一行就停止了,报告中的错误信息为:
Cannot identify the specified item of the TTreeView object. Confirm that the specified item is included in the object's item collection

因为我的WinTreeView有多层,我使用type命令直接定位到需要的节点,我怀疑是不是我GetItemProperty的参数不对?

请知道的朋友指点一下应该怎么做,谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

15#
发表于 2008-8-21 19:01:06 | 只看该作者

回复 1# 的帖子

能够选中节点也能够打开右键,那么右键弹出了选择菜单,这个时间我还想用这个弹出的菜单(这个菜单的选项是动态的),而且获取到该窗体属于window。这时该如何做呢?
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2007-4-20 16:36:33 | 只看该作者
受益菲浅啊,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2007-3-1 15:41:39 | 只看该作者
原帖由 walker1020 于 2007-3-1 13:43 发表
如果GetItemProperty 不能解决问题 ,请看QTP 的帮助里面WinTreeView 对象的其它函数吧。试试 Select 函数。它的具体用法在 帮助里面有。


OK 使用select函数解决了,谢谢大家
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2007-3-1 13:49:56 | 只看该作者

非常感谢版主的热心帮助

我在选择Window("rule_window").WinTreeView("TTreeView").的GetItemProperty函数时,后面提示内容是(Item,property),因此我就把abs_x和abs_y作为test1的一个属性来获取了,可能对于node来说这两个属性是没有的

我再尝试一下其他方法,解决之后再贴上来与大家共享
也希望有经验的朋友们也多出出主意,帮助大家共同进步,谢谢!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2007-3-1 13:43:18 | 只看该作者
    如果GetItemProperty 不能解决问题 ,请看QTP 的帮助里面WinTreeView 对象的其它函数吧。试试 Select 函数。它的具体用法在 帮助里面有。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
    发表于 2007-3-1 13:36:16 | 只看该作者
    其实 你用类似于下面的代码就得到了树的节点:
    item = Window("test_window").WinTreeView("TTreeView").GetItem(0)
    再考虑怎么样点击它吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    9#
    发表于 2007-3-1 13:34:26 | 只看该作者
    又仔细看了一下 QTP的帮助里面对 GetItemProperty Method (WinTreeView)的Property 参数的说明,发现 Property 的可选值里面 根本就没有abs_x 和abs_y !只有一个 表示 whether the tree node item's check box is selected 的 state  属性值。
    剩下的问题由你来解决吧。sdlkfj2
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    8#
    发表于 2007-3-1 13:27:05 | 只看该作者
    因此,建议你先用 GetItem 函数得到WinTreeView("TTreeView") 的需要的Item,然后再使用此 GetItemProperty 函数。注意:abs_x 和abs_y 要有双引号。

    代码大体如下:
      item = Window("test_window").WinTreeView("TTreeView").GetItem(0)
      Dim x,y
    x=Window("test_window").WinTreeView("TTreeView").GetItemProperty(item ,"abs_x")
    y=Window("test_window").WinTreeView("TTreeView").GetItemProperty(item,"abs_y")

    [ 本帖最后由 walker1020 于 2007-3-1 13:29 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
    发表于 2007-3-1 13:21:10 | 只看该作者

    QTP的帮助对 GetItemProperty 的参数的说明

    Item  Required. A Variant value. The item name (with quotes) or numeric index (without quotes) can denote the item. The first item in a tree is numbered 0.  

    Item  是必输项,表示变量的值。item 的名字(带有双引号)或数字索引号(不带双引号)都可以表示一个item 。一个树tree 的第一项的索引号是 0,也就是树的标号从0 开始。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
    发表于 2007-3-1 13:13:40 | 只看该作者

    QTP 提供的GetItemProperty Method (WinTreeView)示例

    Sub GetItemProperty_Example()
    'The following example uses the GetItemProperty method to go to report
    'each node's name to the Results as it iterates over it.

    sReport = ""
    cTabs = -1
    sPath = Dialog("Common Controls").WinTreeView("SysTreeView32").GetItem(0)
    While sPath <> ""
        sTabs = ""
        For iTab = 0 To cTabs
            sTabs = sTabs & "-->"
        Next
        sReport = sReport & sTabs & Dialog("Common Controls").WinTreeView("SysTreeView32").GetITemProperty(sPath, "Text") & vbCr
        If Dialog("Common Controls").WinTreeView("SysTreeView32").GetITemProperty(sPath, "HasChildre n") Then
            Dialog("Common Controls").WinTreeView("SysTreeView32").Expand (sPath)
            sPath = Dialog("Common Controls").WinTreeView("SysTreeView32").GetITemProperty(sPath, "FirstChild")
            cTabs = cTabs + 1
        ElseIf Dialog("Common Controls").WinTreeView("SysTreeView32").GetITemProperty(sPath, "NextSibling") <> "" Then
         sPath = Dialog("Common Controls").WinTreeView("SysTreeView32").GetITemProperty(sPath, "NextSibling")
        Else
            sPath = Dialog("Common Controls").WinTreeView("SysTreeView32").GetITemProperty(sPath, "Parent")
            Dialog("Common Controls").WinTreeView("SysTreeView32").Collapse (sPath)
            cTabs = cTabs - 1
            sPath = Dialog("Common Controls").WinTreeView("SysTreeView32").GetITemProperty(sPath, "NextSibling ")
        End If
    Wend
    MsgBox sReport

    End Sub
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2007-3-1 13:12:32 | 只看该作者
    不好意思,在#2发表留言时没有仔细去看GetItemProperty 这个函数的用法,只是根据以往的经验写了我的建议。
        看了goi  在#3的留言,又看了帮助里对 GetItemProperty 这个函数的说明和例子后,才发现goi  写的代码中GetItemProperty 函数的用法不对。

      QTP的帮助对GetItemProperty 的Description 是
      Returns the current value of a property for a node in the tree-view.
    其语法是
       object.GetItemProperty (Item, Property)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2007-3-1 11:06:52 | 只看该作者
    错误信息是说对TTreeView下 的item对象不能识别,确认是否真的包含了这个项目对象,
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2007-3-1 10:10:40 | 只看该作者
    1, abs_x 和abs_y 要有具体的值才可以呀。输入它们的具体值后看看;

    请问这个是什么意思呀,我用x=Window("test_window").WinTreeView("TTreeView").GetItemProperty("test1",abs_x)不就是想得到abs_x的值吗

    2,如果不行,换一个函数试试看。
    除了这个函数,还有什么方法可以点到这个节点?(节点的位置每次都不固定,但是名字是固定的test1)

    另外,我这个函数的使用格式对不对,参数是不是这样写的?

    谢谢!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2007-3-1 09:14:21 | 只看该作者
    1, abs_x 和abs_y 要有具体的值才可以呀。输入它们的具体值后看看;
    2,如果不行,换一个函数试试看。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

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

    GMT+8, 2024-11-9 09:24 , Processed in 0.080318 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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