原创日志转载请标明出处与连接! 大家的支持是我的动力!_______卢晨之 (luchenzhi@21cn.com/@hotmail.com)

【QTP 编码小知识 二】

上一篇 / 下一篇  2008-09-26 09:44:57 / 个人分类:QTP

查看( 2209 ) / 评论( 19 )
大家看看下面代码,代码是运行在谷歌的主页面,如果大家要试的话,大家同样也可以试试这代码的运行结果。
{!z2tMqD%@0`D0      Dim LinkDes
{iK-K0B;\0H0     Set LinkDes=descrīption.Create()51Testing软件测试网q-i'K!J1?8wb0L
     LinkDes("html tag").value="A"51Testing软件测试网 y!}y n^@2f

@)MY#r5p0U bD0     Set LinkObj=browser("Google").Page("Google").ChildObjects(LinkDes)
4qV1|g?Y0     For i=0 to LinkObj.count
:}#Q;n g!vNmQ}0        LinkObj(i).click
mJ c PaIZ0        browser("Google").Back51Testing软件测试网 eG C0eF2A*EwI
     Next51Testing软件测试网:U%hP6f#\&nN0N
     51Testing软件测试网!k1FW!ao.b$vRj
    代码运行完后,你会发现,原来在循环第2次连接点击的时候,抛出了一个“General run error”。这个是为什么会这样?之前也同样有论坛的朋友问到这样的问题,所以今天就在这里提到。51Testing软件测试网(xG{|HV Ef3h/U
    问题是出在了对第一个连接点击后,做了返回操作所导致的,在第一次back的时候,LinkObj对象就已经丢失了,失效了。所以你在做第2次操作的时候,LinkObj(i)就已经找不到了,因此它会出错。51Testing软件测试网[4e l.b_{&`
    正确的方法,这个也是我目前想到的,或者还有其它达人能做更好的方法出来。
'Rl?@*q%s5j(e S0      Dim LinkDes
7b-h,f'D;ee5f5A ~0     Set LinkDes=descrīption.Create()51Testing软件测试网.jJzpulMw
     LinkDes("html tag").value="A"
(h&B6f6vf*A0
1sv!V q4Xy0     Set LinkObj=browser("Google").Page("Google").ChildObjects(LinkDes)
4X;n e;A:A~0     For i=0 to LinkObj.count51Testing软件测试网5_:O{S}6Z i
         Set LinkObj=browser("Google").Page("Google").ChildObjects(LinkDes)
-R%y(Zi:cR@0        LinkObj(i).click51Testing软件测试网/vZ'Xx#O F%mBr
        browser("Google").Back51Testing软件测试网#CQ EiKt5X
     Next

TAG:

Kevin藏宝库 hsjzfling 发布于2008-09-26 10:28:27

QUOTE:

原帖由 假装不在 于 2008-9-26 09:33 发表
}\HOA?E8Zwww.51testing.com大家看看下面代码,代码是运行在谷歌的主页面,如果大家要试的话,大家同样也可以试试这代码的运行结果。
n&|X([
x$D
      Dim LinkDes
zO7~#q)X|软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具     Set LinkDes=description.Create()
{7R"D*{
Z
@9@/C`软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
     LinkDes("html tag").value="A"
v \ ]hq6dcr\6L软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具bHq5w#kM$`|OQ
     ...
7Y,vJdRz软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具www.51testing.comp%K5w i$oydn
如果页面上的链接排序可能发生变化,即假设点击某个链接后该链接在页面上的排序会发生变化,则lz这个方法就要不灵咯~~中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务(JI_Xf/j

1X/S#my6E:u'qn软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具先去取到页面上所有链接的url,然后逐一跳转,就不会有这一问题了
Kevin藏宝库 hsjzfling 发布于2008-09-26 10:36:04
顺便在补充下~
j@/e(hyux9~7y51Testing软件测试网For i=0 to LinkObj.count
"o7T5^        D)n2a
_Ia软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
这里.count后不要忘记再-1...
YFbL*T:CQ
LK软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
最近老看到有人贴的代码里没有这个-1
假装不在 假装不在 发布于2008-09-26 10:41:15
你说的是,例如
2YE1L"qI:S7P#`a(i)=cstr(linkobj(j))中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务a
}.A5N WF `.s1r9U

for k=0 to count
_%d c%\0NZ9I1zNwww.51testing.com borwser().page().link("url:="&a(k)).click
)`        l'wE+XM中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务next
Di1V$et中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
4{I'y'N$I软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具这样?
helius的个人空间 helius 发布于2008-09-26 10:55:21
看到“蛛丝马迹”了
heqingbluesky发布于2008-09-26 11:02:01
你的都支持一下,虽然测试的不是BS架构的软件。
Kevin藏宝库 hsjzfling 发布于2008-09-26 12:06:14

QUOTE:

原帖由 假装不在 于 2008-9-26 10:41 发表 中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务4l5t o M'`
DP

你说的是,例如51Testing软件测试网Il1T;Hk)n7C
a(i)=cstr(linkobj(j))
q&{v jnb H J中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务for k=0 to count软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具/U\s\/k
borwser().page().link("url:="&a(k)).click
5p6V k6_)m5~(i Qwww.51testing.comnextwww.51testing.comkUxgb.U
51Testing软件测试网_QtVd~zA
这样?
        g-I|bU^M#swww.51testing.com
8_W(P'J]
[软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具
这样。。。
KzA$C*uOJ软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具Dim LinkDes, LinkObj, i51Testing软件测试网;@ak-c,U9f
Dim urls(1000)
gE5d3}%T$}中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务Set LinkDes=description.Create()www.51testing.comh,Z#D[(ztd"c
LinkDes("micclass").value="Link"
a`        ?4~-C%t|;},A中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务Set LinkObj=browser(":=").Page(":=").ChildObjects(LinkDes)软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具:B\%wj,i&_0F,V
For i=0 to LinkObj.count-1
[IY#`f D软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具 urls(i)=LinkObj(i).GetROProperty("url")
|9o!Jv%]"a0z软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具Next
*UjZ2v        j$gr9E软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具For i=0 to LinkObj.count-1
Y _7GAWG {www.51testing.com browser(":=").navigate urls(i)www.51testing.com h
Pp+X~EfO/sp

Next
假装不在 假装不在 发布于2008-09-26 12:13:44
我不赞成你用navigate 的方法。我支持click。 软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具+u"k:v/an&TKfS
起码可以改写成软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具L        H*i(wC8f/x
For i=0 to LinkObj.count-1&IZ,o#Z(_S+Mz
browser(":=").page().link("url:="&urls(i)).clicku1mw/|:z]B S9Y,p
browser().back
4mV|~,UNK$a
U软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
Next软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具Qu_]*sv,T~ r
尽多的模拟操作。
假装不在 假装不在 发布于2008-09-27 11:14:13

QUOTE:

原帖由 heqingbluesky 于 2008-9-26 11:02 发表
#h9[ZWTx软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具你的都支持一下,虽然测试的不是BS架构的软件。
3k"ax&w+w
www.51testing.comu\
{@)EKs

同志,你盲目崇拜
testman发布于2008-09-27 15:11:45
我的帖子“脚本的奇怪问题”和你的这个很相似。
&p#C(ZWu
qk] m        gU        ot6b软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具这样的问题,规避的方法有很多。
,l8C N'B7k*\a软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
|7UY"q,Q.]*O        ?但是这种问题产生的原因是什么?
T}\GH软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具51Testing软件测试网/Rt-uwd_]v
我认为丢失对象的说法不是很准确。如果是丢失对象,那为什么会丢失呢?
Kevin藏宝库 hsjzfling 发布于2008-09-27 15:27:55

QUOTE:

原帖由 假装不在 于 2008-9-26 12:13 发表
.H,FD!a,_
A!l中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
我不赞成你用navigate 的方法。我支持click。
)V0e%k+kYS @U软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具起码可以改写成软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具W w4yY2z3Vq2P
For i=0 to LinkObj.count-14K ^2e&JRH}
browser(":=").page().link("url:="&urls(i)).clickwww.51testing.comA;h5whfTTD*f
browser().back软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具p!u        j)|uT0I?E
Next软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具g[wKG#TY
尽多的模拟操作。
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具DJ#j6J{V5^m4[e

%F$d+F,?]如果只是简单的link,navigate效果是一样的,如果有js的话那就还是得去click了,大思路是一样的,就是先去取url
假装不在 假装不在 发布于2008-09-27 16:13:29

QUOTE:

原帖由 hsjzfling 于 2008-9-27 15:27 发表 www.51testing.comOB|2IA#`O2c

zD't(NEUs
Xn软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具

&x3t9}.s6iGHwww.51testing.com如果只是简单的link,navigate效果是一样的,如果有js的话那就还是得去click了,大思路是一样的,就是先去取url
,e0e0i"yo0A        _8R}*s U
F        OyRnX4Eu iy51Testing软件测试网www.51testing.com(fZ5m1x2Hs'W4B

)^DdJ:z7_6v
S软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具
2个理由简单推翻你:www.51testing.comPUF:p        I ^
1,link click是同时是可以检查例如点击连接后IE死掉(非正常关闭)的情况,也就是我们要抓到的BUG目的之一,如果直接使用跳转,失去意义。P,{!@w.BG,z
2,使用click的目的还有一些跳出的msgbox可以接受处理,如果使用跳转,同样的道理
Kevin藏宝库 hsjzfling 发布于2008-09-27 17:04:21
请注意我的假设前提
假装不在 假装不在 发布于2008-09-27 17:32:47

QUOTE:

原帖由 hsjzfling 于 2008-9-27 17:04 发表
        gy_}1S"^aHv4z中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务请注意我的假设前提
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具I'ts
BUeZ

假装没看到
燃灯斋 zengyixun 发布于2008-10-03 05:00:47
回复 14# 的帖子
晕,假装不在意问题核心,顾左右而言它!
席飞剑(小席老师)的测试专栏 vprince 发布于2008-12-01 14:21:54
有点启发,大家的讨论意见都很不错。
sanlo发布于2008-12-04 13:40:38
学习中~~~
lery的个人空间 lery 发布于2009-09-09 22:41:36

QUOTE:

原帖由 假装不在 于 2008-9-26 09:33 发表
2aj9m+kN.|e9@P!H)zwww.51testing.com大家看看下面代码,代码是运行在谷歌的主页面,如果大家要试的话,大家同样也可以试试这代码的运行结果。
]p0T7jK1?/l中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务      Dim LinkDesp;S`OOo
     Set LinkDes=description.Create()
.ou&z5ZS~        iwww.51testing.com     LinkDes("html tag").value="A"
;Oi*thI"z中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务
'B u9Ot OdA     ...
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具%b7~1x*my!Z.h,~9k.q

]-p
]0L7e/KDk软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具

        rM        Ve1w-b;Awww.51testing.com
zE S#O0Q|6w _V51Testing软件测试网
0|Is[6U51Testing软件测试网
:D
|5P
BC0V,b6u@)rwww.51testing.com
LZ,有个问题不明白 请教你:
sZd&v        {EY51Testing软件测试网我现在那个项目上要获取某个TABLE上的所有链接在QTP8.2上要用links=browser("XXX").Page("XXX").WebTable("XXX").getelementsbytagname("A")才能获取到,
9| lS
L`5W$v51Testing软件测试网
但是在QTP9.2上却要用links=browser("XXX").Page("XXX").WebTable("XXX").ChildObjects(DesLink)才可以呢?(家里用的QTP和公司用的版本不一样,呵呵)-wE
hJvE1q2F&H

另外在WebTable的方法中还存在着ChildItem这个方法,它和ChildObjects的获取子对象有什么区别呢?
dabeixiong的个人空间 dabeixiong 发布于2009-09-10 00:25:27
QTP的bug
xc202发布于2010-06-14 14:03:32
按你这样运行后还会出现相同的错误啊
我来说两句

(可选)

Open Toolbar