51Testing软件测试论坛

标题: 循环设置检查点问题 [打印本页]

作者: xlewy    时间: 2007-6-14 09:58
标题: 循环设置检查点问题
这是我的代码,根据录制结果做了改动,可是总是语法报错。 代码如下:,高手帮忙看看

Dim i
Dim k
i=000009
With Browser("小型系统").Page("小型系统")
With .Frame("leftFrame")
  .Image("Tplus").Click
  .Link("合作项目管理").Click
End With

With .Frame("mainFrame")
  .Link("增加合作项目").Click
  .WebButton("增加合作项目").Click
End With

.Frame("mainFrame_2").WebButton("新 增").Click
.Frame("mainFrame_3").Check CheckPoint("mainFrame_4")
   With .Frame("mainFrame_3")
     .Check CheckPoint("")
  .Check CheckPoint("mainFrame_5")
  .Check CheckPoint("mainFrame_6")
  .Check CheckPoint("mainFrame_8")
  
      .WebEdit("Form:fax").Set "1"
   .WebRadioGroup("Form:status").Select "A"
      .WebEdit("Form:catalogName").Set "项目1"
    .WebEdit("Form:prodCode").Set i
    .WebButton("新 增").Click
        End With
      
         With .Frame("mainFrame_4")
  Do  
      While Browser("小型系统").Page("小型系统").Frame("mainFrame_4").Check CheckPoint("mainFrame_9") ‘主要是检查此输入值是否存在,利用报错信息“此代码已存在”所设置的文本检查点。
      .WebEdit("Form:prodCode").Set i
      .WebButton("新 增").Click
      i=i+1
  Loop  
        Browser("小型系统").Page("小型系统").Frame("mainFrame_4").Check CheckPoint("mainFrame_10")
  .WebEdit("Form:fax").Set "1111111"
  .WebEdit("Form:prodCode").Set "0000094"
  .WebButton("新 增").Click
End With

With .Frame("mainFrame_5")
  .WebList("Form:area").Select "M省"
  .WebList("Form:area").Select "----K市"
  .WebList("Form:area").Select "----Y区"
  .WebButton("新 增").Click
End With

.Frame("mainFrame_6").WebButton("确定").Click

End With
作者: winfood    时间: 2007-6-14 10:07
While Browser("小型系统").Page("小型系统").Frame("mainFrame_4").Check CheckPoint("mainFrame_9")
这里有语法错误,当Check方法有返回值得时候应该是Check(CheckPoint(***)),不是Check CheckPoint(***)。
作者: yangkinki    时间: 2007-6-14 10:11
報什么語法錯誤?
這個 i 值是什么類型的數據?
作者: xlewy    时间: 2007-6-14 11:02
原帖由 yangkinki 于 2007-6-14 10:11 发表
報什么語法錯誤?
這個 i 值是什么類型的數據?


语法错误请见附件贴图。
i 变量在代码中已做了说明
Dim i
Dim k
i=000009
其实它就是个代码,对它的数据类型没有严格限制的

[ 本帖最后由 xlewy 于 2007-6-14 11:06 编辑 ]
作者: winfood    时间: 2007-6-14 11:19
原帖由 xlewy 于 2007-6-14 11:02 发表


语法错误请见附件贴图。
i 变量在代码中已做了说明
Dim i
Dim k
i=000009
其实它就是个代码,对它的数据类型没有严格限制的

问题就在你用颜色标的那行!
While Browser("小型系统").Page("小型系统").Frame("mainFrame_4").Check CheckPoint("mainFrame_9")
这样用是错的,应该是Check(CheckPoint(***)),不是Check CheckPoint(***)。
While后面需要连接一个变量,当Check后面跟括号的时候才有返回值。
作者: yangkinki    时间: 2007-6-14 11:20
i=i+1之后,i等于10,而不是0000010
当Check方法有返回值得时候应该是Check(CheckPoint(***)) ,加個括號
作者: youxipp    时间: 2007-6-14 11:40
我也不算太了解,不过我看帮助里面
while
Wend
是这样用的
作者: xlewy    时间: 2007-6-14 13:33
原帖由 yangkinki 于 2007-6-14 11:20 发表
i=i+1之后,i等于10,而不是0000010
当Check方法有返回值得时候应该是Check(CheckPoint(***)) ,加個括號



刚才这么试了一下,循环是通过了,可是正如楼上所说的,i+1=10,初始在代码中给i 赋值00009,实际上赋值却为9。

请问哪位知道这种情况应该怎么写语句呢? 我想实现的功能是:起初给i赋一个随机值, 然后将i值填入应用程序中的文本框中:.WebEdit("Form:prodCode").Set i
只要该检查点报出“该代码值已存在”的信息,i 值就自加操作。 如0001自加为0002? 有什么好方法吗???
作者: winfood    时间: 2007-6-14 13:59
如果你需要的那个Code是个固定长度的字符串,办法就是先把一个整数换成字符串然后补足一定个数的0。

除此之外,还可以写成这样:
i = 0.000009 '初始的值
iStep = 0.000001 '增加的值
i = i + iStep
MsgBox Mid(FormatNumber(i, 6), 3)
其中FormateNumber函数是把这个小数格式化成小数点后固定为6位的一个字符串,即"0.000010"
Mid函数把这个字符串前面的"0."去掉。

这样写可以省掉补足0的循环操作
作者: xlewy    时间: 2007-6-14 15:54
原帖由 winfood 于 2007-6-14 13:59 发表
如果你需要的那个Code是个固定长度的字符串,办法就是先把一个整数换成字符串然后补足一定个数的0。

除此之外,还可以写成这样:
i = 0.000009 '初始的值
iStep = 0.000001 '增加的值
i = i + iStep
Msg ...


谢谢LS的,又学习了~~
现在有个问题想请教下,我是将这个文本检查点设为循环条件,当检查点为真,即有出现“输入的代码已存在”的提示信息,就进入循环。 可是这样就出现了一个问题:在运行完毕产生的result中会出现这个检查点出错的信息。因为退出循环的条件就是当这个输入值合理时,也就是这个文本检查点为“假“。如何避免这种情况呢,有没更好的设计方法出避免这没有必要的检查点出错信息??
作者: winfood    时间: 2007-6-14 21:18
恐怕直接用CheckPoint不能达到目的了,CheckPoint的检查和结果报告是一体的,检查完了以后就会向Test Result输出结果。
只能用自己去判断对象是否存在了。比如:
If Object.Exist(*) Then
    Reporter.ReportEvent micPass, "***", "*****"
Else
    Reporter.ReportEvent micFail, "***", "*****"
End If
这样检查和输出结果分别由Object.Exist方法和Reporter.ReportEvent方法实现,就很容易控制了。
作者: xlewy    时间: 2007-6-15 12:53
原帖由 winfood 于 2007-6-14 21:18 发表
恐怕直接用CheckPoint不能达到目的了,CheckPoint的检查和结果报告是一体的,检查完了以后就会向Test Result输出结果。
只能用自己去判断对象是否存在了。比如:
If Object.Exist(*) Then
    Reporter.Repo ...

尝试使用这个EXIST的方法,可是一直报错。 这个Object选取的是哪个对象名呢,想不出哪里出错了。可以帮忙看看吗?已把EXIST语句注释(绿色),用Reporter来实现,可是也是出错:sdlkfj9

countnumber=0
     ' If Browser("小型系统").Page("小型系统").Frame("mainFrame_4").Exists(*) Then  
   Do  While Browser("小型系统").Page("小型系统").Frame("mainFrame_4").Check (CheckPoint("mainFrame_9") )
     countnumber=countnumber+1
               i=i+iStep
               k=FormatNumber(i,6)
      .WebEdit("Form:prodCode").Set k
      .WebButton("新 增").Click
    If countnumber>0 Then
          Reporter.ReportEvent micPass,"Text CheckPoint "mainFrame_9: ","产品代码唯一性校验已完成"&countnumber&"次, 请忽略这个检查点信息"
    End If
        Loop

[ 本帖最后由 xlewy 于 2007-6-15 12:57 编辑 ]
作者: winfood    时间: 2007-6-15 13:13
改过之后的代码逻辑比较乱,应该把你的思路先整理一下再动手。
原先的Do While... End Do那段是先判断错误提示是否存在,如果存在就让Code增加一下然后再尝试点击"增加"按钮,我的例子只是参考性的。在你的Case里面根本用不着If... Else... End If这个逻辑。

Do While Object.Exist(*)
     Reporter.ReportEvent ...
     ... ...
Loop
Reporter.ReportEvent
Object就是那个错误信息对象。如果是WebPage上面的文字提示,用QTP把它识别出来添加到对象库里面就行了(估计是WebElement类型的对象)。只要它存在就说明添加没有成功,应该改动ProjCode之后继续尝试。

另外还有一处可以改进的地方,就是While的位置。如果把代码写成
Do
... ...
Loop While ...
那么前面那部分单独添加了一次的操作就可以省掉了,对吧?
作者: xlewy    时间: 2007-6-20 15:33
sdlkfj3
原帖由 winfood 于 2007-6-15 13:13 发表
改过之后的代码逻辑比较乱,应该把你的思路先整理一下再动手。
原先的Do While... End Do那段是先判断错误提示是否存在,如果存在就让Code增加一下然后再尝试点击"增加"按钮,我的例子只是参考性的。在你的Cas ...



谢谢,按你的建议,试了下,基本OK了,谢谢~~~学习
作者: guijia2    时间: 2007-6-29 20:37
看君一长帖,胜我搞十天啊 受教
作者: junlingliu    时间: 2007-11-20 15:51
标题: 回复 5# 的帖子
同意
作者: caodongjian    时间: 2007-11-20 16:05
看到差距了




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