51Testing软件测试论坛

标题: 在写QTP脚本时发现的问题,请那位大虾给解决一下。谢谢 [打印本页]

作者: hilltan78    时间: 2007-11-29 16:18
标题: 在写QTP脚本时发现的问题,请那位大虾给解决一下。谢谢
当我运行下面的测试脚本时,测试停在了第12步(运行第12步时,被测试的系统会弹出一个对话框,提示FirstName的值不能为空。),知道我手工将弹出的对话框给关闭后测试脚本才能继续运行(脚本的第13步就是关闭这个对话框的)或者被终止。如果用其他的方法可以解决这个问题,但我现在想使用set objectname=testobject.object 去传递这个测试的对象到函数中去使用。
1.Dim strURL,Savebutton,FirstName
2.strURL="http://localhost:8080/xpc/jsp/admin/Login.jsp"
3.SystemUtil.Run "IEXPLORE.EXE",strURL
4.Browser("ecVision XpressCommerce").Page("LoginPage").WebRadioGroup("SelectAdminType").Select "#0"
5.Browser("ecVision XpressCommerce").Page("LoginPage").WebEdit("password").SetSecure "47453ef3a1b27537"
6.Browser("ecVision XpressCommerce").Page("LoginPage").WebElement("LoginButton").Click
7.Browser("ecVision XpressCommerce").Page("ecVision XpressCommerce_2").Frame("clientframe").Link("Edit Profile").Click
8.Set FirstName=Browser("ecVision XpressCommerce").Page("ecVision XpressCommerce_2").Frame("clientframe_2").WebEdit("firstName").Object
9.Set SaveButton=Browser("ecVision XpressCommerce").Page("ecVision XpressCommerce_2").Frame("clientframe_2").WebButton("Save").Object
10.FirstName.value=""
11.SaveButton.focus
12.SaveButton.click
13.Browser("ecVision XpressCommerce").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
14.Browser("ecVision XpressCommerce").Page("ecVision XpressCommerce_2").Frame("menuframe").Link("Logout").Click
15.Browser("ecVision XpressCommerce").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
作者: gy21st    时间: 2007-11-29 17:33
你到底有什么问题呢?能用通畅的中文清楚地描述问题现象和所期待的结果吗?
作者: hsjzfling    时间: 2007-11-29 20:01
有必要这么搞么。。。对象识别的清清楚楚,QTP也为这些对象提供了相应的方法,还非要去用.object ...何必呢。。。focus后你按个空格还能让人理解,既然是用click那focus有啥意义。。。

回到正题,其实根本就没有什么问题。
被测程序中有个正常的value check功能,在FirstName框为空的时候是不能Save的。仅此而已。。。

PS:对被测程序的流程都不清楚怎么编写自动化脚本。。。
作者: hilltan78    时间: 2007-11-30 11:29
朋友,你没有明白我的意思不要妄下结论好吗?我对业务流程熟得很。
关于用focus是我去做调试用的,在最后的脚本里面肯定不会使用的啦。
要用这个我说得很清楚了,是为了把对象传到函数中去使用。如果不是为了把对象传进函数中去使用的话,我也不会这么用。
如果用descriptive programming的话,我要传进去太多的属性,函数的参数就比较多了。所以选择传对象,但是传进去的对象一碰到弹出对话框就不能运行了。
作者: hsjzfling    时间: 2007-11-30 11:54
原帖由 hilltan78 于 2007-11-30 11:29 发表
朋友,你没有明白我的意思不要妄下结论好吗?我对业务流程熟得很。
关于用focus是我去做调试用的,在最后的脚本里面肯定不会使用的啦。
要用这个我说得很清楚了,是为了把对象传到函数中去使用。如果不是为了把对象 ...


不好意思,是我没理解你的问题,不过再看了两遍,也正如2楼所说,问题呢?
没搞明白“如果用其他的方法可以解决这个问题,但我现在想使用set objectname=testobject.object 去传递这个测试的对象到函数中去使用。”和你的“当我运行下面的测试脚本时,测试停在了第12步(运行第12步时,被测试的系统会弹出一个对话框,提示FirstName的值不能为空。),知道我手工将弹出的对话框给关闭后测试脚本才能继续运行(脚本的第13步就是关闭这个对话框的)或者被终止。”有什么关系。。。
问题在哪。。。
作者: yzem99    时间: 2007-11-30 16:08
SaveButton.click
if Browser("ecVision XpressCommerce").Dialog("Microsoft Internet Explorer").WinButton("确定").Exists(3) then
     Browser("ecVision XpressCommerce").Dialog("Microsoft Internet Explorer").WinButton("确定").Click
End if

你试试这个,等待那个对话框(提示FirstName的值不能为空)出来后,再点”确定“,就可以关闭了,不用手工去关。

应该跟你传不传参数没什么关系。
希望这个对你有用!!!
作者: hilltan78    时间: 2007-12-3 14:40
标题: 谢谢楼上的
谢谢楼上的提供的方法,但这个我已经试过了。但没有用。
使用了Set SaveButton=Browser("ecVision XpressCommerce").Page("ecVision XpressCommerce_2").Frame("clientframe_2").WebButton("Save").Object 这个语句后,如果页面有弹出窗口的话,他无法运行通过savebutton.click,脚本后面的步骤不能运行同时系统也不会报错;但如果savebutton.click后面的步骤没有弹出窗口的话,这个脚本都能正常的运行。我觉得这个问题很奇怪,如果是说弹出的Dialog("Microsoft Internet Explorer")不能识别的话,那么QTP应该在超时后弹出不能识别对象的错误,但我等了有10分钟左右也没有看到不能识别对象的错误。(超时时间为30秒)
作者: 地主家de少爷    时间: 2007-12-3 17:18
看8懂,你们都是高人




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