ice1216 发表于 2009-11-6 11:38:09

关于输入等待的问题

我在操作一个表单时,其中需要输入一行字段,输入完该字段后系统会提供相应的选项进行选择。不过QTP会回放时,可能由于输入该字段信息过快,导致该数据可选项并没有显示出来(在输入信息时,会与系统进行交互来显示所符合的数据进行选择)。开始我以为需要在输入数据后加上等待时间,但是我试了还是不行。
我怀疑是QTP输入过快导致该问题的产生,但是不清楚如何设置,使得脚本在输入该字段时,输入的速度慢一点。(比如输入“ABC”,QTP会很快的就显示出“ABC”,能不能让其速度慢点,出现“A”"B""C"3个字符一个一个输出的效果)
请各位帮忙!

先谢了!

testlab 发表于 2009-11-6 11:44:29

用type一个一个字符输入

ice1216 发表于 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的方法说的具体些,或者其他的方法,谢谢!

ice1216 发表于 2009-11-6 14:05:34

高手们,快出手啊   :Q

feiyunkai 发表于 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
ifBrowser("信息管理系统").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 编辑 ]

ice1216 发表于 2009-11-6 16:31:49

谢谢

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

ice1216 发表于 2009-11-6 16:32:40

之前看过一个帖子说到 “WebEdit要用WshShell.SendKeys”,不知道哪位可以讲解下,谢谢!

zero0223 发表于 2009-11-6 16:36:14

看看这个
有sendkey用法

风雪夜归人 发表于 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 编辑 ]

ice1216 发表于 2009-11-9 10:06:07

回复 9# 的帖子

谢谢,不过MS这个方法也不行。

feiyunkai 发表于 2009-11-13 14:53:16

回复 6# 的帖子

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

[ 本帖最后由 feiyunkai 于 2009-11-13 14:56 编辑 ]
页: [1]
查看完整版本: 关于输入等待的问题