51Testing软件测试论坛

标题: QTP在webtable中取值,比大小总是错误 [打印本页]

作者: weslywang    时间: 2009-7-23 17:17
标题: QTP在webtable中取值,比大小总是错误
代码如下
for i=2 to  y
y=Browser("").Frame("mainFrame_3").WebTable("序号").RowCount
for i=2 to  y
val_id =int(Browser("").Frame("mainFrame_3").WebTable("序号").GetCellData(i,1))
id=DataTable("字段值", dtLocalSheet)
state=DataTable("运算符", dtLocalSheet)
'msgbox(val_id)
Select Case true
Case state="等于"
If val_id = id Then
  reporter.ReportEvent micPass,"实际结果都等于"& id &"。",val_id
  else
  reporter.ReportEvent micFail,"实际结果异常,有不等于"& id &"的,实际值为"& val_id &"。",val_id
End If

Case state="大于"
If val_id > id Then
  reporter.ReportEvent micPass,"实际结果都大于"& id &"。",val_id
  else
  reporter.ReportEvent micFail,"实际结果异常,有小于等于"& id &"的,实际值为"& val_id &"。",val_id
    End If

Case state="小于"
    If val_id < id Then
  reporter.ReportEvent micPass,"实际结果小于"& id &"。",val_id
  else
  reporter.ReportEvent micFail,"实际结果异常,有大于等于"& id &"的,实际值为"& val_id &"。",val_id
  End If

End Select

next

脚本可以成功跑完,可是看结果报告,总是出现比对错误的情况,小于的情况下,QTP正常判断,等于和大于的情况下,虽然实际值是正确的,QTP却判断错误,我用的是QTP9.2。
请各位大侠帮忙,解释下这个古怪的现象吧···折腾了我一下午了。
另外,QTP9.2支持Cint()这个函数吗?我在这段代码里使用的时候,QTP报错,如图
作者: Haereticus    时间: 2009-7-23 18:52
val_id =int(Browser("").Frame("mainFrame_3").WebTable("序号").GetCellData(i,1))
val_id 已转成int型了 而从datatable中取"id"的你没转
id=Cint(DataTable("字段值", dtLocalSheet))
作者: weslywang    时间: 2009-7-23 22:40
标题: 回复 1# 的帖子
我也想用Cint来强制转换值,可是我的QTP报错,说VBS不支持Cint。。。。。。
作者: intothestorm    时间: 2009-7-24 09:44
仔细看2楼说的,val_id已经用int()转过了,要转的是id。
你F1找一下CInt就知道QTP支持不了。
提示下:Integer的范围是-32,768 to 32,767,超过了用CLng。
作者: weslywang    时间: 2009-7-24 11:40
标题: 回复 4# 的帖子
的确如此```能成功比对了!!3Q````
作者: sunhope800    时间: 2009-8-10 14:56
学习了!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2