51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2711|回复: 10
打印 上一主题 下一主题

[原创] 新手求帮忙 为什么循环执行后出错?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-8-26 13:40:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
那位高手 有时间 帮帮忙啊 !!!最近看看了QTP 写了个脚本 但是出现了和奇怪的错位!!!哪位高手帮忙解决下 !!!
如果只执行一次(最外面的循环)没有错, 但是循环就报错了,,弄了好久没明白!!!求解 说明:代码中的Parameter("chkname")为QTPro.exe,parameter("rltpath")为一个自己设的路径 E:\result.xls
整个代码如下:

For circ = 0 to 1

systemutil.Run "C:\WINDOWS\system32\taskmgr.exe","","C:\WINDOWS\system32","open"

If dialog("Windows 任务管理器").Exist  Then

Dim  i ,cntc ,chknam ,roname ,mytime , mydate ,cntl

mytime = time

mydate = date

chknam =  Parameter("chkname")

cntl = dialog("Windows 任务管理器").WinListView("SysListView32").GetROProperty("items count")

cntc = dialog("Windows 任务管理器").WinListView("SysListView32").ColumnCount

With dialog("Windows 任务管理器").WinListView("SysListView32")

For i = 0 To cntl - 1

dialog("Windows 任务管理器").WinListView("SysListView32").Select i

roname = dialog("Windows 任务管理器").WinListView("SysListView32").GetSelection

If chknam  =  roname Then

Dim  fso  ,f

Dim resultnames ,resultvelues ,iname() ,ivelue()

Set fso = CreateObject("scripting.filesystemobject")

Set f = fso.OpenTextFile(parameter("rltpath"),8,true,-2)

ReDim iname(cntc) ,ivelue(cntc)

f.Write vbcrlf & mydate & vbtab

f.Write mytime & vbcrlf

For j = 0 to cntc - 2

iname(j) = .GetColumnHeader(j)

f.Write iname(j)&vbtab

next

iname(cntc-1) = .GetColumnHeader(cntc-1)

f.Write iname(j) & vbcrlf

For j =0 to cntc-1

iname = .GetColumnHeader(j)

ivelue(j) = .GetSubItem(i,iname(j))

f.Write ivelue(j) & vbtab

Next

For j = 0 to cntc -1

If    iname(j) = "内存使用" or   iname(j) = "内存使用" or  iname(j) ="高峰内存使用" or  iname(j) ="虚拟内存大小" or  iname(j) ="页面缓冲池" or  iname(j) ="非页面缓冲池" or  iname(j) ="内存增量" Then

ivelue(j) = left (cstr ( ivelue(j)), len( ivelue(j))-1)

resultNames =resultNames +iname(j) +" (k) *"

resultVelues =resultVelues+ ivelue(j)+ "*"

elseif  iname(j) = "页面错误" or  iname(j) ="页面错误增量"or  iname(j) ="句柄数" or  iname(j) ="线程数" or  iname(j) ="USER 对象" or  iname(j) ="GDI 对象" or  iname(j) = "I/O 读取" or  iname(j) ="I/O 写入"or  iname(j) ="I/O 其它" or  iname(j) ="I/O 读取字节"or  iname(j) = "I/O 字节" or  iname(j) = "I/O 写入字节" or  iname(j) ="”I/O 其他字节"  then

resultNames =resultNames +iname(j) +"*"

resultVelues =resultVelues+ ivelue(j)+ "*"

Parameter("resultNames") = resultNames

Parameter("resultVelues") = resultVelues

End If

Next

Exit for

End If
next

End With

Set fso = nothing

Set f = nothing

If  chkname <> roname Then

reporter.ReportEvent micWarning, "warming","应用程序不存在"

End If

dialog("Windows 任务管理器").Close

End If

wait (2)

Next










提示信息见附件

[ 本帖最后由 mhgzs 于 2010-8-26 13:44 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-8-26 13:51:08 | 只看该作者

自己先顶一个!!

帮忙 不胜感激啊!!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-8-26 14:01:40 | 只看该作者
最后一个wait时间长点试试 比如wait 10
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-8-26 14:22:47 | 只看该作者
试了一下,没出截图中的错误
下面这句,iname之前是数组,直接赋值出错
iname = .GetColumnHeader(j)

后面也发现该错误。。。的确比较妖怪,2个变量值相同,类型相同,但还是报错

不过像这样的扫描纪录用QTP做界面式的本来就不太合适,内存之类的数据都应该能通过系统直接拿到的

[ 本帖最后由 skyzhu 于 2010-8-26 14:52 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-8-26 21:27:23 | 只看该作者
非report-style的listview不能用GetColumnHeader

建议通过WMI、dotNetFactory等方式取进程资源
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-8-27 14:54:43 | 只看该作者
原帖由 skyzhu 于 2010-8-26 14:22 发表
试了一下,没出截图中的错误
下面这句,iname之前是数组,直接赋值出错
iname = .GetColumnHeader(j)

后面也发现该错误。。。的确比较妖怪,2个变量值相同,类型相同,但还是报错

不过像这样的扫描纪录用QT ...

求教:怎么从系统 获得 内存之类的数据呢?可不可以写个具体点的方法 谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-8-27 14:55:37 | 只看该作者

回复 5# 的帖子

WMI、dotNetFactory 这些都不懂 呵呵!!

可以帮忙整一下么?给个类子 谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-8-27 15:53:48 | 只看该作者

回复 1# 的帖子

vbs脚本里面一定有关于系统资源方面的对象。在qtp中使用那样的对象。我的思路。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-8-27 17:23:58 | 只看该作者

回复 8# 的帖子

::yiwusuoyou::: 你说的太对了
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-8-27 20:47:18 | 只看该作者
可以通过访问WMI,获得所有进程信息,具体详见:
http://blog.csdn.net/blizzardlyk/archive/2010/08/24/5834980.aspx
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-4-22 12:50
  • 签到天数: 393 天

    连续签到: 1 天

    [LV.9]测试副司令

    11#
    发表于 2010-8-28 15:41:43 | 只看该作者
    试一下:
    1,将chknam与roname弹出来看一下
    msgbox chknam
    msgbox roname
    2,试一下类型转换
    If cstr(chknam)  =  cstr(roname) Then
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-8 14:49 , Processed in 0.076840 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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