QTP Tutorial 中的订票操作参数化后无法运行第二行的解决方法
Description:根据 QTP_Tutorial 里面的步骤介绍,先录制预定从 New York 到 San Francisco 航班的机票的操作,然后增加检查点 Checkpoint,最后对fromPort 进行参数化。最后的脚本如下:
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("userName").Set "mercury"
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("password").Set "mercury"
Rem 为了说明问题,上面一行是我对原来录制的脚本修改后的结果。如果是录制的脚本,上面一行应为
Rem Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").WebEdit("password").SetSecure "... "
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours").Image("Sign-In").Click 21,2
Wait(5)
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromPort").Select DataTable("depatture", dtGlobalSheet)
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromMonth").Select "December"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromDay").Select "29"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toPort").Select "San Francisco"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toMonth").Select "December"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toDay").Select "31"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebRadioGroup("servClass").Select "Business"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").Image("findFlights").Click 65,7
Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").Image("reserveFlights").Click 77,10
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebTable("New York to San Francisco").Check CheckPoint("New York to San Francisco")
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").Check CheckPoint("Book a Flight: Mercury")
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passFirst0").Set "Demie"
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passFirst0").Check CheckPoint("passFirst0")
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passLast0").Set "Sun"
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("creditnumber").Set "8888888888888888"
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").Image("buyFlights").Click 35,3
Browser("Welcome: Mercury Tours").Page("Flight Confirmation: Mercury").Check CheckPoint("New York")
Browser("Welcome: Mercury Tours").Page("Flight Confirmation: Mercury").Image("home").Click
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours_2").Sync
[ 本帖最后由 walker1020 于 2007-11-22 23:28 编辑 ] 原帖由 风之无痕 于 2007-4-12 09:35 发表 http://bbs.51testing.com/images/common/back.gif
谢谢你的回答,我想知道要学好这个工具都需要什么编程基础或者别的什么计算机知识的基础?
如果只是为了学习 QTP,那么只需要学习 VBScript 就可以了。当然,我们不是为了学习工具而学习它。为了测试工作的需要,你还需要
了解甚至熟悉测试系统的语言,例如我现在测试的是 J2EE架构的流程管理软件,那么我要知道 J2EE 方面的相关知识,还要知道企业流程方面的有关知识。学无止境。测试也一样。
[ 本帖最后由 walker1020 于 2007-4-12 17:40 编辑 ] 回放时,QTP正常运行完DataTable的第一行,但当第二次运行时,报告错误:
Cannot identify the object "fromPort" (of class WebList). Verify that this object's properties match an object currently displayed in your application.
Line (6): "Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromPort").Select DataTable("depatture", dtGlobalSheet)".
[ 本帖最后由 walker1020 于 2007-11-22 23:29 编辑 ]
寻找错误
设置断点后,发现是运行完第二行代码后,登陆不成功,自然就找不到这个对象了。仔细检查后发现:在运行第二行的参数时,登陆的时候,userName填完以后,填写password后,userName又变成空的。当然登陆就失败了。 Solution:删除最后一行,问题就解决了。
Analysis:
问题出在最后一行的Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours_2") 页面与初始页面 Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours") 不是一个页面,登陆自然不会成功。
说明
这是我在帮助一位朋友解决此问题后写的详细结果过程。可能需要初学者都遇到过这个问题,愿我的解答能释去你们的疑惑。为了帮助更多的朋友,把正确的代码共享出来。具体代码请看附件。下载此代码不需要任何积分!为了便于理解,我已经增加了不少注释。
[ 本帖最后由 walker1020 于 2007-4-4 13:13 编辑 ] 呵呵,walker兄弟热心,支持你
回复 #5 walker1020 的帖子
good 谢谢,我遇到过这个问题QTP参数化问题
在最后一节的运行和分析多操作时,“FlightOrder”操作将运行两次,但在第二次循环时就不能识别对象了,请问是怎么回事?应该如何修改? 请 limxi520 参考一下我在 #5的附件里面的脚本,看看两者有什么区别。如果问题还有得到解决,那么 就把第二次循环时就不能识别对象的那部分代码放上来吧。这样可以帮你。没有脚本根本没有办法帮你! To walker:请问每次停止录制都会出现Sync事件是什么意思?这是进Find a Flight页面循环两次的脚本,第二次循环就不能识别对象了,请帮忙看一下应该如何修改?
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromPort").Select "London"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromMonth").Select DataTable("p_fromMonth", dtLocalSheet)
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromDay").Select "29"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toPort").Select DataTable("ArrivalCity", dtLocalSheet)
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toMonth").Select DataTable("p_toMonth", dtLocalSheet)
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("toDay").Select "31"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").Image("findFlights").Click 51,9
Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").Image("reserveFlights").Click 77,6
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passFirst0").Set "zhang"
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passLast0").Set "ming"
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("creditnumber").Set "123456"
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").Image("buyFlights").Click 90,14
Browser("Welcome: Mercury Tours").Page("Flight Confirmation: Mercury").Image("backtoflights").Click
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").Sync 原帖由 limxi520 于 2007-4-11 09:03 发表 http://bbs.51testing.com/images/common/back.gif
To walker:
请问每次停止录制都会出现Sync事件是什么意思?这是进Find a Flight页面循环两次的脚本,第二次循环就不能识别对象了,请帮忙看一下应该如何修改?
Browser("Welcome: Mercury Tours").Page("Find ...
比较你在 #11放的代码和我在 #1的代码,我猜测你在最后一个页面上点击的是BACK TO FLIGHTS 按钮,而不是QTP Tutorial里面要求的 BACK TO HOME 按钮。 点击 按钮后,QTP 会为你自动生成代码
Browser("Welcome: Mercury Tours").Page("Flight Confirmation: Mercury").Image("home").Click
而不是你现在的
Browser("Welcome: Mercury Tours").Page("Flight Confirmation: Mercury").Image("backtoflights").Click
另外,请把下面一行删除:
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours_2").Sync
[ 本帖最后由 walker1020 于 2007-4-11 14:08 编辑 ]