51Testing软件测试论坛

标题: 脚本回放,button点击一次,查看结果,却添加了2条记录 [打印本页]

作者: 迷眼了    时间: 2010-4-12 18:56
标题: 脚本回放,button点击一次,查看结果,却添加了2条记录
录制代码,调试以后脚本是这样的:
Browser("link").Page("link").WebEdit("comment").Click
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys DataTable("Comment", dtGlobalSheet)(此处之所以用这种方法,是因为add按钮需要enable)
wait(5)
Browser("link").Page("link").WebElement("Add").Click

运行,查看结果,发现comments添加了2条,于是单步调试,奇怪,一步步调试,添加就只有一条数据(这是我需要的结果)

看了半天,也没有循环嵌套,但是全部运行和单步运行得出的结果就是不一样,同志们有遇到过这种情况么?
作者: TIB    时间: 2010-4-12 22:05
估计是这一句有问题:
WshShell.SendKeys DataTable("Comment", dtGlobalSheet)

单步调试时,这一句应该不会作用于Add按钮,因为出于调试状态,被QTP窗口挡住了
作者: 迷眼了    时间: 2010-4-13 10:00
可是,这一句只是sendkeys,把我需要的comments打出来,可能我还不太了解这句的作用,本来只是把webedit.set 就可以了,但是这样的话add按钮不会被激活,因为没有感应到输入字符,所以我就用了sendkeys,难道这个sendkey还有其他用途?
作者: TIB    时间: 2010-4-13 10:54
改成这样试试:
Browser("link").Page("link").WebEdit("comment").Click
Browser("link").Page("link").WebEdit("comment").Set "comments"
Browser("link").Page("link").WebElement("Add").Object.disabled = 0
Browser("link").Page("link").WebElement("Add").Click
作者: 迷眼了    时间: 2010-4-13 11:06
这样不行,因为这个add按钮吧,它一定是要感应到key键入了才能enable,气煞我也,不能人为的去把它enable,一下子set,这个按钮感应不到,很是顽固,呵呵,所以我只能用sendkey,好不容易招到这个sendkeys了吧,问题又来了,这个sendkey难道会自己去再次激发add?set nothing也不行,但是我不知道这个跟单步调试为啥就不一样呢?你说他屏蔽了窗口,屏蔽了哪个窗口?:(
作者: TIB    时间: 2010-4-13 11:10
那就改用Mercury.DeviceReplay对象来发送按键试试吧
作者: 迷眼了    时间: 2010-4-13 13:04
试过了,也是2条记录,呵呵,跟sendkeys一样的问题,晕
作者: 迷眼了    时间: 2010-4-13 13:05
我试试描述性编程看,但是这个好像不是问题的所在
作者: 迷眼了    时间: 2010-4-13 13:44
问题解决了,让我气节的是,不用sendkeys,也不用devicereplay,我用回了set,竟然就可以了,肯定后台改过了,昨天我运行了几个小时都不行,实在是,虽然脚本没问题了,但是对sendkeys和devicereplay引发的2条记录的疑问还是存在,如果同志们有遇到过,忘不吝赐教,呵呵
作者: 17800455    时间: 2010-4-20 11:01
标题: 回复 1# 的帖子
你DataTable Global中有几行啊。。。郁闷




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