小新弦子 发表于 2011-3-3 09:07:10

求助:怎样获取WinlistView中的对象呢?

QTP将其识别为一个WinlistView对象。点击CEO或设计的区别只是点击的坐标的位置不同。有什么方法获取"CEO"或"设计"吗?让后我可以根据循环的次数确定其坐标,然后点击。大侠们,多多指教。。。

819longjiayan 发表于 2011-3-3 09:45:55

没太明白你的意思。。。你这个是表格吗?如果是表格,可以使用获取表格中值的childitem方法。。还有一个getcelldata方法取值

小新弦子 发表于 2011-3-3 10:35:21

回复 2# 819longjiayan


    不是表格。。就是QTP将“名称”,"CEO"等整个识别为一个Winlistview,我想在想通过某个方法得到第一行的CEO中的“CEO”第二行的“设计”,通过什么方法才能得到这些值呢?

shingo0109 发表于 2011-3-3 10:43:21

LZ是想通过得到这些名称, 然后来进行选择操作么? 还是说只是取名称

小新弦子 发表于 2011-3-3 11:07:17

回复 4# shingo0109


    对,就是获取名称,获取名称后我就可以通过字符串比较,然后决定下面的操作。。

shingo0109 发表于 2011-3-3 14:03:44

LZ看看这个帖子吧, http://bbs.51testing.com/viewthread.php?tid=117979&highlight=winlistview

小新弦子 发表于 2011-3-3 14:36:33

回复 6# shingo0109


    我看到了。。还是不知道该怎么解决这个问题。。。你能明白他写的意思吗?望指教。。

17800455 发表于 2011-3-3 14:41:43

你录制一下,看一下qtp智能,是怎么取的。 

难道qtp录制不了吗。

shingo0109 发表于 2011-3-3 14:58:50

本帖最后由 shingo0109 于 2011-3-3 15:00 编辑

LZ参考以下代码中的函数试试, 因为我这边用任务管理器试了下,跑到这步“ Columns(iColumn) = Obj.GetColumnHeader(iColumn) "老是报“未指定的错误”的错误, 我也不清楚原因了.

ReDim Columns(10)
Set Obj = Window("搜狗音乐盒").WinListView("SysListView32")
cColumns = Obj.ColumnCount()
For iColumn = 0 To cColumns - 1
Columns(iColumn) = Obj.GetColumnHeader(iColumn)
Next
cItems = Obj.GetItemsCount

For iItems = 0 To cItems - 1
str ="第 "&iItems+1&" 首歌曲属性列表"& vbCr
For iColumn =0 To cColumns - 1
   str = str &Columns(iColumn)&" = "& Obj.GetSubItem(iItems ,Columns(iColumn)) & vbCr
Next
Msgbox str
Next
Set Obj = nothing

小新弦子 发表于 2011-3-3 15:22:41

回复 8# 17800455


    是的。。点击CEO或设计唯一的区别就是点的位置不同,即坐标不同。所以我想通过循环,在循环中得到某一行的text值,如果跟我有的值相同,根据循环的次数,判断位置,就去点击相应地位置。

小新弦子 发表于 2011-3-3 15:23:44

回复 9# shingo0109


    我也是。所以还是不知该怎么办??

shingo0109 发表于 2011-3-3 16:20:37

帮顶了, 等待高手答案~~:D

june.diny 发表于 2011-3-3 16:40:55

查看HELP,winlistview对象有多种方法可用。
按照你描述的,可以试下以Get开头的那几个方法:GetItem,GetItemProperty,GetSubItem等等。。

小新弦子 发表于 2011-3-3 17:26:42

回复 13# june.diny

我知道,可是我不知道用哪个方法。。看帮助我对方法的具体作用还是不清楚。。不知道该怎么用,调了半天,还是不对。。关键是对方法的作用不清楚。。你要清楚地话帮忙想下吧。。就是通过winlistview的自身的方法实现对某一项text值的获取。

shingo0109 发表于 2011-3-3 17:28:50

回复 13# june.diny


我这边用任务管理器试了下你说的那些方法, 如GetItem, GetColumnHeader,GetSubItem, 为啥总是报错啊?
但我用GetItemsCount和ColumnCount这2个是可以输出值的

楼上知道原因么?

june.diny 发表于 2011-3-3 17:45:28

本帖最后由 june.diny 于 2011-3-3 17:55 编辑


借楼上的话题,以任务管理器为例:
ItemName = Dialog(..).WinListView(..).GetItem(2)

ItemName 就是要获取的值

注:GetItem括号里面的值是index,从0开始。。。

june.diny 发表于 2011-3-3 17:53:57

回复 15# shingo0109

我试了下都可以的,要不你重启下试试

liujinkui 发表于 2011-3-3 23:31:52

With Dialog("Windows Task").WinListView("SysListView32")
   For i = 0 To 5
             sSub = "Image Name"
             sReport = sReport + .GetSubItem(i, "Image Name") & vbTab
             sReport = sReport + .GetSubItem(i, "PID") & vbTab
             sReport = sReport + .GetSubItem(i, "CPU") & vbTab
             sReport = sReport + .GetSubItem(i, "CPU Time") & vbTab
             sReport = sReport + .GetSubItem(i, "Mem Usage")
             sReport = sReport + vbCr
      Next

         sReport = sReport + .GetSubItem("QTPro.exe", 0) & vbTab
         sReport = sReport + .GetSubItem("QTPro.exe", 1) & vbTab
         sReport = sReport + .GetSubItem("QTPro.exe", 2) & vbTab
         sReport = sReport + .GetSubItem("QTPro.exe", 3) & vbTab
         sReport = sReport + .GetSubItem("QTPro.exe", 4)
         sReport = sReport + vbCr

    End With
    Reporter.ReportEvent micDone, "Task Manager", sReport

End Sub

小新弦子 发表于 2011-3-4 11:25:38

回复 16# june.diny
你知道为啥Columns(iColumn) = Obj.GetColumnHeader(iColumn) "老是报“未指定的错误”的原因吗?

shingo0109 发表于 2011-3-4 12:48:52

回复 19# 小新弦子


我也是报这个错误啊。。不知是啥原因
页: [1] 2
查看完整版本: 求助:怎样获取WinlistView中的对象呢?