新人请教:如何对WinTreeView 的一个节点右键点击?
小弟刚开始学习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的参数不对?
请知道的朋友指点一下应该怎么做,谢谢!
1, abs_x 和abs_y 要有具体的值才可以呀。输入它们的具体值后看看;
2,如果不行,换一个函数试试看。 1, abs_x 和abs_y 要有具体的值才可以呀。输入它们的具体值后看看;
请问这个是什么意思呀,我用x=Window("test_window").WinTreeView("TTreeView").GetItemProperty("test1",abs_x)不就是想得到abs_x的值吗
2,如果不行,换一个函数试试看。
除了这个函数,还有什么方法可以点到这个节点?(节点的位置每次都不固定,但是名字是固定的test1)
另外,我这个函数的使用格式对不对,参数是不是这样写的?
谢谢!! 错误信息是说对TTreeView下 的item对象不能识别,确认是否真的包含了这个项目对象, 不好意思,在#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)
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
QTP的帮助对 GetItemProperty 的参数的说明
ItemRequired. 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 开始。 因此,建议你先用 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 编辑 ] 又仔细看了一下 QTP的帮助里面对 GetItemProperty Method (WinTreeView)的Property 参数的说明,发现 Property 的可选值里面 根本就没有abs_x 和abs_y !只有一个 表示 whether the tree node item's check box is selected 的 state属性值。
剩下的问题由你来解决吧。sdlkfj2 其实 你用类似于下面的代码就得到了树的节点:
item = Window("test_window").WinTreeView("TTreeView").GetItem(0)
再考虑怎么样点击它吧 如果GetItemProperty 不能解决问题 ,请看QTP 的帮助里面WinTreeView 对象的其它函数吧。试试 Select 函数。它的具体用法在 帮助里面有。
非常感谢版主的热心帮助
我在选择Window("rule_window").WinTreeView("TTreeView").的GetItemProperty函数时,后面提示内容是(Item,property),因此我就把abs_x和abs_y作为test1的一个属性来获取了,可能对于node来说这两个属性是没有的我再尝试一下其他方法,解决之后再贴上来与大家共享
也希望有经验的朋友们也多出出主意,帮助大家共同进步,谢谢! 原帖由 walker1020 于 2007-3-1 13:43 发表
如果GetItemProperty 不能解决问题 ,请看QTP 的帮助里面WinTreeView 对象的其它函数吧。试试 Select 函数。它的具体用法在 帮助里面有。
OK 使用select函数解决了,谢谢大家 受益菲浅啊,谢谢
回复 1# 的帖子
能够选中节点也能够打开右键,那么右键弹出了选择菜单,这个时间我还想用这个弹出的菜单(这个菜单的选项是动态的),而且获取到该窗体属于window。这时该如何做呢?
页:
[1]