查看完整版本: QTP Tutorial 中的订票操作参数化后无法运行第二行的解决方法

walker1020 2007-4-4 12:31

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

[[i] 本帖最后由 walker1020 于 2007-11-22 23:28 编辑 [/i]]

walker1020 2007-4-4 12: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)".

[[i] 本帖最后由 walker1020 于 2007-11-22 23:29 编辑 [/i]]

walker1020 2007-4-4 12:45

寻找错误

设置断点后,发现是运行完第二行代码后,登陆不成功,自然就找不到这个对象了。仔细检查后发现:在运行第二行的参数时,登陆的时候,userName填完以后,填写password后,userName又变成空的。当然登陆就失败了。

walker1020 2007-4-4 12:50

Solution:
删除最后一行,问题就解决了。

Analysis:
问题出在最后一行的Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours_2") 页面与初始页面 Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours") 不是一个页面,登陆自然不会成功。

walker1020 2007-4-4 12:53

说明

这是我在帮助一位朋友解决此问题后写的详细结果过程。可能需要初学者都遇到过这个问题,愿我的解答能释去你们的疑惑。为了帮助更多的朋友,把正确的代码共享出来。具体代码请看附件。下载此代码不需要任何积分!
为了便于理解,我已经增加了不少注释。

[[i] 本帖最后由 walker1020 于 2007-4-4 13:13 编辑 [/i]]

songfun 2007-4-4 13:35

呵呵,walker兄弟热心,支持你

yuanxinyi16rain 2007-4-4 13:51

回复 #5 walker1020 的帖子

good

Coffey111111 2007-4-4 22:32

谢谢,我遇到过这个问题

limxi520 2007-4-10 10:22

QTP参数化问题

在最后一节的运行和分析多操作时,“FlightOrder”操作将运行两次,但在第二次循环时就不能识别对象了,请问是怎么回事?应该如何修改?

walker1020 2007-4-10 21:07

请 limxi520 参考一下我在 #5的附件里面的脚本,看看两者有什么区别。如果问题还有得到解决,那么 就把第二次循环时就不能识别对象的那部分代码放上来吧。这样可以帮你。没有脚本根本没有办法帮你!

limxi520 2007-4-11 09:03

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

walker1020 2007-4-11 14:00

[quote]原帖由 [i]limxi520[/i] 于 2007-4-11 09:03 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=481889&ptid=71974][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
To walker:
请问每次停止录制都会出现Sync事件是什么意思?这是进Find a Flight页面循环两次的脚本,第二次循环就不能识别对象了,请帮忙看一下应该如何修改?
Browser("Welcome: Mercury Tours").Page("Find ... [/quote]

比较你在 #11放的代码和我在 #1的代码,我猜测你在最后一个页面上点击的是[color=Red]BACK TO FLIGHTS [/color]按钮,而不是QTP Tutorial  里面要求的 [color=Red]BACK TO HOME[/color] 按钮。 点击 按钮后,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

[[i] 本帖最后由 walker1020 于 2007-4-11 14:08 编辑 [/i]]

walker1020 2007-4-11 14:31

To limxi520

如果你按照我在 # 12的操作去做,问题应该得到解决。提醒你一下:做测试一定要细心!

风之无痕 2007-4-11 16:59

搂主,你真行,我还没有作呢,在后面肯定能用上!还有我想问下,如果没有实际的项目,怎么才能练QTP除了那个预订票例子以外?

walker1020 2007-4-11 18:36

To 风之无痕

对一道数学题,如果你能用 N 种方法去解决,那么你的收获肯定要远远比解答 N个同类的问题的收获大。QTP Tutorial说的那个预订票例子的所有操作(录制、参数化、置检查点、回放等),你都理解吗? 在 Expert View里面的代码你都理解其含义吗?

walker1020 2007-4-11 18:37

这是一个初学者练习QTP的最好的例子,因为有讲解,还可以来论坛发帖。呵呵!sdlkfj5

风之无痕 2007-4-12 09:35

谢谢你的回答,我想知道要学好这个工具都需要什么编程基础或者别的什么计算机知识的基础?

liyun100 2007-4-12 15:13

谢谢,我也遇到了这个问题,不过我都是手动再录入一次登录名和密码后,就可继续运行了,方法比较笨,也不知道原因在哪,不过现在好了。

zhaojingshu1025 2007-4-12 16:08

回复 #1 walker1020 的帖子

傲傲管用,顶一下!

walker1020 2007-4-12 17:34

[quote]原帖由 [i]风之无痕[/i] 于 2007-4-12 09:35 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=483299&ptid=71974][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
谢谢你的回答,我想知道要学好这个工具都需要什么编程基础或者别的什么计算机知识的基础? [/quote]

如果只是为了学习 QTP,那么只需要学习 VBScript 就可以了。当然,我们不是为了学习工具而学习它。为了测试工作的需要,你还需要
了解甚至熟悉测试系统的语言,例如我现在测试的是 J2EE架构的流程管理软件,那么我要知道 J2EE 方面的相关知识,还要知道企业流程方面的有关知识。学无止境。测试也一样。

[[i] 本帖最后由 walker1020 于 2007-4-12 17:40 编辑 [/i]]

冲上云霄 2007-4-12 20:27

谢谢斑竹大哥!

帮我解决这个问题,真得很感谢。
毕业一年了,决定在测试这一行潜心学习。
遇到问题能够有斑竹这样的热心人帮忙,觉得感激不尽。
只有更认真学习!!sdlkfj6

冲上云霄 2007-4-12 20:29

学无止境

[quote]原帖由 [i]walker1020[/i] 于 2007-4-12 17:34 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=484256&ptid=71974][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]


如果只是为了学习 QTP,那么只需要学习 VBScript 就可以了。当然,我们不是为了学习工具而学习它。为了测试工作的需要,你还需要
了解甚至熟悉测试系统的语言,例如我现在测试的是 J2EE架构的流程管理软件 ... [/quote]

我要好好学习!sdlkfj2 sdlkfj2

zhaojingshu1025 2007-4-13 11:17

回复 #1 walker1020 的帖子

楼主你好,我刚刚接触QTP.
想请教一个问题,为什么运行报告总提示
passfirst0失败?我进入Details查看时,value值
下面显示一行灰色条.

walker1020 2007-4-13 12:52

To zhaojingshu1025

设置检查点时,[color=Red]检查点的位置要选择 After[/color](默认的选项是 Before),在回放就OK了。另外,

[[i] 本帖最后由 walker1020 于 2007-4-13 12:53 编辑 [/i]]

walker1020 2007-4-13 12:52

请参考 [url]http://bbs.51testing.com/thread-48130-1-1.html[/url]

lilyhuang 2007-4-13 14:44

我也遇到这个问题了,我按照《QTP8 Tutorial_oldsidney.pdf》上面的最后所提的插入已存在的动作说明做的,开始也遇到LZ在#1所述的现象,我也按LZ的解决方案去把最后的那句:Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours_2").Sync给注释掉了,一运行,连第一次也不行了,同样错误提示.当我再把原来注释掉的打开时,也是一次也不能运行了.
请问这是怎么回事?
我的脚本:
'sign-in
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours_2").WebEdit("userName").Set "lily"
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours_2").WebEdit("password").SetSecure "461f1f287666219f003701405990"
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours_2").Image("Sign-In").Click 38,7
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury_2").Sync
'copy of flightorder
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromPort").Select "New York"
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromMonth").Select DataTable("p_Item11", 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("p_Item1", dtLocalSheet)
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").Image("findFlights").Click 64,12
Browser("Welcome: Mercury Tours").Page("Select a Flight: Mercury").Image("reserveFlights").Click 59,14
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passFirst0").Set "huang"
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("passLast0").Set "lily"
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebEdit("creditnumber").Set "789"
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").WebCheckBox("ticketLess").Set "ON"
Browser("Welcome: Mercury Tours").Page("Book a Flight: Mercury").Image("buyFlights").Click 58,3
Browser("Welcome: Mercury Tours").Page("Flight Confirmation: Mercury").Image("home").Click
Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours_2").Sync
'rerurnhome
Return to page used in first step of the test.
Browser("Find a Flight: Mercury").Page("Find a Flight: Mercury").Link("Home").Click
Browser("Find a Flight: Mercury").Page("Welcome: Mercury Tours").Sync

lilyhuang 2007-4-13 14:50

还有快速回复居然没有地方让我把图片附件给加上去!?

walker1020 2007-4-13 16:06

请 lilyhuang  把 用户名和密码都改为 mercury后 ,重新录制 然后试试。还有,一定要把最后那一行删除,就是删除
Browser("Find a Flight: Mercury").Page("Welcome: Mercury Tours").Sync

sneel 2007-4-14 13:10

sdlkfj5 谢谢斑竹了

zhaojingshu1025 2007-4-26 11:10

回复 #1 walker1020 的帖子

版主,我想问一下,我对Frommonth参数化后,又进修正.但是运行结果时总提示Checkpoint失败.我不知道为什么.sdlkfj9 sdlkfj9

walker1020 2007-4-28 08:35

你对 Frommonth参数化后,对 原来的Checkpoint 也要进行修改

apple_love521 2007-4-29 16:00

感谢

sdlkfj9 我遇到这样的问题两天了两人,一直没有办法解决,虽然我现在还是晕乎乎的,可是再看几遍估计就能明白了
以后要好好学习,不能依赖别人找答案,要学会自己动手!sdlkfj2

shuixin128 2007-5-8 09:27

非常感谢啊,好人!

abens0426 2007-5-12 12:16

回复 #5 walker1020 的帖子

谢谢楼主

allenzgw 2007-5-13 08:44

我当时就把登陆输入用户名的过程重复了一遍就行了

yooyooo 2007-6-6 10:41

谢谢楼主

我也是遇到了这个问题, 等下去试下

yooyooo 2007-6-6 14:33

[quote]原帖由 [i]walker1020[/i] 于 2007-4-4 12:50 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=475236&ptid=71974][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
Solution:
删除最后一行,问题就解决了。

Analysis:
问题出在最后一行的Browser("Welcome: Mercury Tours").Page("Welcome: Mercury Tours_2") 页面与初始页面 Browser("Welcome: Mercury Tours").Page( ... [/quote]

首先谢谢楼主! 用这个方法是解决了问题. 但我有两个疑问:
1. 我在删除最后一行后, 偶尔会在运行到第三个循环时还是会出同样的错. 再运行又不会出错. 是不是跟网速有关系?
2. 为什么把最后一行的Browser("Find a Flight: Mercury").Page("Welcome: Mercury Tours_2").Sync 改为 Browser("Find a Flight: Mercury").Page("Welcome: Mercury Tours").Sync就不行呢. 一定要删除这个同步点呢

呵,俺QTP还刚学不久:)

yzgonline 2007-6-11 17:14

回复 #1 walker1020 的帖子

遇到过该问题

walker1020 2007-6-13 15:52

[quote]原帖由 [i]yooyooo[/i] 于 2007-6-6 14:33 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=553919&ptid=71974][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]


首先谢谢楼主! 用这个方法是解决了问题. 但我有两个疑问:
1. 我在删除最后一行后, 偶尔会在运行到第三个循环时还是会出同样的错. 再运行又不会出错. 是不是跟网速有关系?
2. 为什么把最后一行的Browser(" ... [/quote]

关于你的第二个问题,请看 [url]http://bbs.51testing.com/thread-71974-1-1.html[/url]上#4我的回复。

candela 2007-6-25 16:48

谢谢 版主,我的情况与18楼的一样,现在才如梦初醒 呵呵
页: [1] 2 3
查看完整版本: QTP Tutorial 中的订票操作参数化后无法运行第二行的解决方法