51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4098|回复: 16
打印 上一主题 下一主题

[求助] 循环设置检查点问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-6-14 09:58:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我的代码,根据录制结果做了改动,可是总是语法报错。 代码如下:,高手帮忙看看

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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-6-14 10:07:30 | 只看该作者
While Browser("小型系统").Page("小型系统").Frame("mainFrame_4").Check CheckPoint("mainFrame_9")
这里有语法错误,当Check方法有返回值得时候应该是Check(CheckPoint(***)),不是Check CheckPoint(***)。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2015-4-23 14:35
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    3#
    发表于 2007-6-14 10:11:01 | 只看该作者
    報什么語法錯誤?
    這個 i 值是什么類型的數據?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2007-6-14 11:02:18 | 只看该作者
    原帖由 yangkinki 于 2007-6-14 10:11 发表
    報什么語法錯誤?
    這個 i 值是什么類型的數據?


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

    [ 本帖最后由 xlewy 于 2007-6-14 11:06 编辑 ]

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2007-6-14 11:19:50 | 只看该作者
    原帖由 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后面跟括号的时候才有返回值。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2015-4-23 14:35
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    6#
    发表于 2007-6-14 11:20:53 | 只看该作者
    i=i+1之后,i等于10,而不是0000010
    当Check方法有返回值得时候应该是Check(CheckPoint(***)) ,加個括號
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-6-14 11:40:31 | 只看该作者
    我也不算太了解,不过我看帮助里面
    while
    Wend
    是这样用的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2007-6-14 13:33:51 | 只看该作者
    原帖由 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? 有什么好方法吗???
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2007-6-14 13:59:14 | 只看该作者
    如果你需要的那个Code是个固定长度的字符串,办法就是先把一个整数换成字符串然后补足一定个数的0。

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

    这样写可以省掉补足0的循环操作
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2007-6-14 15:54:33 | 只看该作者
    原帖由 winfood 于 2007-6-14 13:59 发表
    如果你需要的那个Code是个固定长度的字符串,办法就是先把一个整数换成字符串然后补足一定个数的0。

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


    谢谢LS的,又学习了~~
    现在有个问题想请教下,我是将这个文本检查点设为循环条件,当检查点为真,即有出现“输入的代码已存在”的提示信息,就进入循环。 可是这样就出现了一个问题:在运行完毕产生的result中会出现这个检查点出错的信息。因为退出循环的条件就是当这个输入值合理时,也就是这个文本检查点为“假“。如何避免这种情况呢,有没更好的设计方法出避免这没有必要的检查点出错信息??
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-6-14 21:18:51 | 只看该作者
    恐怕直接用CheckPoint不能达到目的了,CheckPoint的检查和结果报告是一体的,检查完了以后就会向Test Result输出结果。
    只能用自己去判断对象是否存在了。比如:
    If Object.Exist(*) Then
        Reporter.ReportEvent micPass, "***", "*****"
    Else
        Reporter.ReportEvent micFail, "***", "*****"
    End If
    这样检查和输出结果分别由Object.Exist方法和Reporter.ReportEvent方法实现,就很容易控制了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2007-6-15 12:53:59 | 只看该作者
    原帖由 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 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2007-6-15 13:13:54 | 只看该作者
    改过之后的代码逻辑比较乱,应该把你的思路先整理一下再动手。
    原先的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 ...
    那么前面那部分单独添加了一次的操作就可以省掉了,对吧?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2007-6-20 15:33:25 | 只看该作者
    sdlkfj3
    原帖由 winfood 于 2007-6-15 13:13 发表
    改过之后的代码逻辑比较乱,应该把你的思路先整理一下再动手。
    原先的Do While... End Do那段是先判断错误提示是否存在,如果存在就让Code增加一下然后再尝试点击"增加"按钮,我的例子只是参考性的。在你的Cas ...



    谢谢,按你的建议,试了下,基本OK了,谢谢~~~学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2007-6-29 20:37:48 | 只看该作者
    看君一长帖,胜我搞十天啊 受教
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2007-11-20 15:51:29 | 只看该作者

    回复 5# 的帖子

    同意
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2007-11-20 16:05:38 | 只看该作者
    看到差距了
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-15 05:00 , Processed in 0.089804 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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