51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] 关于输入等待的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-11-6 11:38:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在操作一个表单时,其中需要输入一行字段,输入完该字段后系统会提供相应的选项进行选择。不过QTP会回放时,可能由于输入该字段信息过快,导致该数据可选项并没有显示出来(在输入信息时,会与系统进行交互来显示所符合的数据进行选择)。开始我以为需要在输入数据后加上等待时间,但是我试了还是不行。
我怀疑是QTP输入过快导致该问题的产生,但是不清楚如何设置,使得脚本在输入该字段时,输入的速度慢一点。(比如输入“ABC”,QTP会很快的就显示出“ABC”,能不能让其速度慢点,出现“A”"B""C"3个字符一个一个输出的效果)
请各位帮忙!

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

使用道具 举报

该用户从未签到

2#
发表于 2009-11-6 11:44:29 | 只看该作者
用type一个一个字符输入
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2009-11-6 12:15:32 | 只看该作者

录制脚本

Browser("信息管理系统").Page("信息管理系统").Link("工单管理").Click
Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_list").WebButton("新建").Click
Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("code").Set DataTable("departure", dtGlobalSheet)
Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("batchSize").Set DataTable("departure1", dtGlobalSheet)
Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("materialCode").Set DataTable("departure2", dtGlobalSheet)
Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("pcbaVersion").Set DataTable("departure3", dtGlobalSheet)
Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("weekOfYear").Set DataTable("departure4", dtGlobalSheet)
Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebButton("提交").Click
Browser("信息管理系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click

我对里面字段进行了参数化,我所说的字段就是“departure2”。能否将type的方法说的具体些,或者其他的方法,谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2009-11-6 14:05:34 | 只看该作者
高手们,快出手啊   
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2009-11-6 15:40:55 | 只看该作者

    方法有很多,下面写三种方法作为参考

    第一种方法用wait(N)设置等待N秒后执行下面的代码
    wait(2) '等待2秒后向下执行
    Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("materialCode").Set DataTable("departure2", dtGlobalSheet)
    第二种方法是等待输入框出现时,再执行后面的代码
    Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("materialCode").WaitProperty "visible", True, 100000
    '等待该编辑框出现后,执行后面的代码(等待时间超过100秒后不再等待)
    第三种,利用Exist判断该编辑框有没有出现,如果出现继续执行下面代码,如果未出现,等待1秒后继续判断,连续判断10秒,如果出现了就继续向后执行
    for i=1 to 10
    if  Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("materialCode").Exist then
    Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("materialCode").Set DataTable("departure2", dtGlobalSheet)
    exit for
    else
    wait(1)
    next

    [ 本帖最后由 feiyunkai 于 2009-11-13 14:50 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2009-11-6 16:31:49 | 只看该作者

    谢谢

    不过 我都试了一下,还是不行。
    第一种,我之前自己也试过了
    第二种的话,直接跳过该数据了
    第三种就直接报错了     “ unexpected ”
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2009-11-6 16:32:40 | 只看该作者
    之前看过一个帖子说到 “WebEdit要用WshShell.SendKeys”,不知道哪位可以讲解下,谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2009-11-6 16:36:14 | 只看该作者
    看看这个
    有sendkey用法

    本帖子中包含更多资源

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

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2009-11-6 18:26:56 | 只看该作者
    Browser("信息管理系统").Page("信息管理系统").Link("工单管理").Click
    Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_list").WebButton("新建").Click
    Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("code").Set DataTable("departure", dtGlobalSheet)
    Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("batchSize").Set DataTable("departure1", dtGlobalSheet)
    sendKeys "departure2"
    Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("pcbaVersion").Set DataTable("departure3", dtGlobalSheet)
    Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("weekOfYear").Set DataTable("departure4", dtGlobalSheet)
    Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebButton("提交").Click
    Browser("信息管理系统").Dialog("Microsoft Internet Explorer").WinButton("确定").Click

    Function sendKeys(strParameter)
            intRow = DataTable.GlobalSheet.GetRowCount
            strSendString = ""
            For i = 1 To intRow
                    strCellDate = DataTable.GlobalSheet.GetParameter(strParameter)
                    DataTable.GlobalSheet.SetNextRow
                    strSendString = strSendString & strCellDate & "|"
            Next

            strKeys = Split(strString, "|")
            For Each character In strKeys
                    Browser("信息管理系统").Page("信息管理系统").Frame("mainFrame_detail").WebEdit("materialCode").Set strKeys
                    Wait 0,500 '等待500毫秒或者 wait 1 等待1秒
            Next
    End Function

    [ 本帖最后由 风雪夜归人 于 2009-11-6 18:33 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2009-11-9 10:06:07 | 只看该作者

    回复 9# 的帖子

    谢谢,不过MS这个方法也不行。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-18 10:31
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    11#
    发表于 2009-11-13 14:53:16 | 只看该作者

    回复 6# 的帖子

    第二种方法中的100应该为100000,因为那里的时间单位是豪秒,所以100000才是100秒,输入100,其实只是等了0.1秒,所以你运行到这里的时候会直接跳过
    还有一种简单的方法:那就是等待页面元素全部加载完成,再向后执行脚本
    Browser("信息管理系统").Page("信息管理系统").sync

    [ 本帖最后由 feiyunkai 于 2009-11-13 14:56 编辑 ]
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-27 01:42 , Processed in 0.071547 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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