因为你的QTP里的对象库没有对象呀,怎么执行?
你最好是自己先录制一次,然后再根据上面讲的步骤算法来重新写一下.
回复 #1 lovetest6 的帖子
请问版主element.tagname和element.InnerText是属于哪一块的语言?在哪可以查到tagname和innertext属性的相关资料?我在QTP帮助文档里没有查到。 我也想问楼上同样的问题,这样写以后看变量的变化,好像和预期的值不一样! For Each element in tagsIf Ucase(element.tagname)="A" and left(element.InnerText,1)="[" Then
ReDim Preserve arr(i+1)
arr(i)=element.InnerText
i=i+1
end if
Next
谁能告诉我这段代码的作用是什么? 特别是if那个语句
回复 #2 lovetest6 的帖子
请教版主然后得到所有版面的名称,也就是link的名称。
存到数组里面
如何存进数组啊?
我在研究你这个帖子,不知道怎么实现 楼主的这个参数化的方法很不错 :),如果为了检验页面所有的Link,我有个简单方法
我分析一下搂主的意思:
某个页面的所有的Link都点击并Check一遍。
那么思路基本应该是:进入该页面(*)--〉点击Link--〉Page复位(*)--〉点击Link。。。。直到所有link被点击一次。
即:
Browser("Browser").Page("Page").Link("name:=我的初始页面").Click
Browser("Browser").Page("Page").Sync
For i=0 to 1000
If Browser("Browser").Page("Page").Link("index:="&i).Exist Then
msgbox Browser("Browser").Page("Page").Link("index:="&i).GetRoProperty("name")//获得Link名称
Browser("Browser").Page("Page").Link("index:="&i).Click
Browser("Browser").Page("Page").Sync
{... ...} //此处可以根据Link名称进行Link页面的校验
Browser("Browser").Page("Page").Link("name:=我的初始页面").Click//此句为页面复位作用
Browser("Browser").Page("Page").Sync
Else
Exit For
End If
Next
msgbox "该页面中Link的数量为:"&i
//
回复 #26 Hunter 的帖子
Hunter兄我按照你给的代码,运行了,有点问题
因为我的系统在每一个页面都会有一个Log out的Link,所以每次检查到这个Link的时候,就点了它退出了,之后了,退出到登陆界面,又有一个Forget password的Link,所以它就不停的去点这个Link。
我想做的是,如果遇到Log out只是检查不要点击它,必然就没发去检查Log out后面的Link了,这个语句该怎么写啊,就是说如果遇到Log out,不要点击这个Link,继续往下执行
请教Hunter 兄以及各路高手帮忙解决一下!
回复 #10 shengyan 的帖子
10F的,我用了可以,但是唯一的一点就是:要把所要测试的Link写到一个数组里,并且要改变For循环的次数。就这一点不太好。但是要参数化的Link不需要加到对象库也能运行。能写出这么强的代码,已经很不错了。再次感谢
[ 本帖最后由 alex_82712 于 2007-5-7 17:52 编辑 ] 太谢谢了!!!!! 关于循环语句的使用:
在这里还是提倡使用For each
如果用Hunter 的方法,for i=1 to 1000(如果页面上的link 大于1000怎么办?)
不管1000个link的可能性如何,至少觉得不严密。
如果真的要计算page上的links数,还不如直接使用 standard checkpoint (QTP Tutorial 上) 找了好久,终于找到我要查的问题的帖子了,太谢谢大家了
还有两个问题,有谁可以详细的教一下:
1.如何录制或写可以循环的脚步(比如我要测试很多次点击一个按钮“Cancel”,这个动作怎么录)
2.我想根据条件来跑程序,应该怎么写脚本呢?
比如在一定的条件下,会出现一种情况
另外的情况下,又会出现另外的情况
知道的同仁一定帮忙呀sdlkfj2
回复 #2 lovetest6 的帖子
For Each element in tagsIf Ucase(element.tagname)="A" and left(element.InnerText,1)="[" Then
ReDim Preserve arr(i+1)
arr(i)=element.InnerText
i=i+1
end if
Next
上面代码中if后的第2个条件不具有普遍性,并不是每个链接的InnerText都是以[开头的,比如注册,登录,退出等,所以觉得应该去掉这个条件
回复 20# 的帖子
我遇到的问题跟你的一样。但我不明白你下楼说的意思。是不是这样理解:先转到“http://bbs.51testing.com/default.php”此页面 ,然后点击各个栏目。而后在将刚才专家视图中的代码换成楼主的代码。但是“Browser("Browser").Navigate "http://bbs.51testing.com/index.php"”这个地方的网址必须改为“http://bbs.51testing.com/default.php” 。。高手们帮我指点一下迷雾吧。我已经快崩溃了啊 。。。:( 原帖由 Fantastic_test 于 2007-12-6 09:36 发表 http://bbs.51testing.com/images/common/back.gif
我遇到的问题跟你的一样。但我不明白你下楼说的意思。是不是这样理解:先转到“http://bbs.51testing.com/default.php”此页面 ,然后点击各个栏目。而后在将刚才专家视图中的代码换成楼主的代码。但是“Browser("Br ...
别崩溃啊。我想可能是论坛升级后,程序无法运行了。 原帖由 terrylight 于 2007-1-26 10:08 发表 http://bbs.51testing.com/images/common/back.gif
For Each element in tags
If Ucase(element.tagname)="A" and left(element.InnerText,1)="[" Then
ReDim Preserve arr(i+1)
arr(i)=element.InnerText
i ...
这段代码的意思就是说,如果tagname是link的标记:<A>,而且link还是以"["开头。那么就认为这是板块名称的link。
就把它存到数组里面。 原帖由 lily_mu75 于 2007-1-12 18:09 发表 http://bbs.51testing.com/images/common/back.gif
请问版主element.tagname和element.InnerText是属于哪一块的语言?在哪可以查到tagname和innertext属性的相关资料?我在QTP帮助文档里没有查到。
查一下MS的手册吧。vbscript的。我想应该能查到吧。
回复 1# 的帖子
支持,顶 .........顶一个....[ 本帖最后由 kamina_ 于 2007-12-29 14:39 编辑 ]