51Testing软件测试论坛

标题: 请问,web测试中如何让QTP识别一个名字会变的按钮? [打印本页]

作者: stringw    时间: 2008-3-25 15:30
标题: 请问,web测试中如何让QTP识别一个名字会变的按钮?
我做的是web测试,页面是一个用java编写的table控件,但table按钮上的名字后面用括号加了一个点击次数,点击次数是个变量,回放时点击次数已经加一,结果名字就变了,QTP无法再次识别这个按钮了。
我试过把它定义为虚拟对象,但是不行啊。请高手指点。
作者: language_fw    时间: 2008-3-25 15:37
可以用描述性编程的方法尝试一下。。。
作者: stringw    时间: 2008-3-25 16:08
可以用描述性编程的方法尝试一下。。。

请问如何使用描述性编程方法呢?
我试过使用按钮的其它属性来识别按钮,但好像这个按钮的属性不多,需要名字来识别。
我还尝试把名字中的数字使用Regular Expression表示,好像无效。
作者: hdice    时间: 2008-3-25 16:10
可以用描述性编程来解决,举个简单列子
set myButton= Description.Create
myButton("html id")="Button1"
Browser("****").Page("***").WebButton(myButton).click

楼主试试,
作者: hsjzfling    时间: 2008-3-25 16:18
原帖由 stringw 于 2008-3-25 16:08 发表

请问如何使用描述性编程方法呢?
我试过使用按钮的其它属性来识别按钮,但好像这个按钮的属性不多,需要名字来识别。
我还尝试把名字中的数字使用Regular Expression表示,好像无效。


怎么会无效呢。。。你是如何使用正则表达式的。。。
你在对象库中将那个数字变化的属性参数化->启用正则表达式->将变化的数字用正则表达式替换,比如替换为[0-9]*
作者: stringw    时间: 2008-3-25 16:28
请问html id是填什么呢?是原来按钮的名字吗?还是button1是原来按钮的名字?
我的代码如下:
Browser("****").Page("***").Link("网友评论(40)").Click
每次增加一条评论,网友评论后的数字就加一。
作者: stringw    时间: 2008-3-25 16:32
我把属性改为了 网友评论([0-9][0-9]),但是不行啊。
作者: MarsNoNo    时间: 2008-3-25 16:49
原帖由 stringw 于 25/3/2008 16:32 发表
我把属性改为了 网友评论([0-9][0-9]),但是不行啊。

用spy去查看那个按钮,选择其中一个属性,就OK啦,比如像上面几楼的人说的“html id”等。
作者: hdice    时间: 2008-3-25 16:50
原帖由 stringw 于 2008-3-25 16:28 发表
请问html id是填什么呢?是原来按钮的名字吗?还是button1是原来按钮的名字?
我的代码如下:
Browser("****").Page("***").Link("网友评论(40)").Click
每次增加一条评论,网友评论后的数字就加一。


html id是button的一个属性,在页面的源文件中可以看到
这个链接应该有一个固定的属性。
作者: stringw    时间: 2008-3-25 17:03
这个东西好像是用ajax做的,没有链接属性,html id是空的,其它可以识别的属性好像都叫
网友评论(41)
作者: hsjzfling    时间: 2008-3-25 17:13
原帖由 stringw 于 2008-3-25 16:32 发表
我把属性改为了 网友评论([0-9][0-9]),但是不行啊。


直接改属性当然是不行的。。。
你有先点参数化的那个按钮,在正则表达式那里打勾,然后再写表达式么。。。


或者用描述性编程语句来写(纯粹为了直观的表达。。。)
Browser("****").Page("***").Link("innertext:=网友评论([0-9][0-9])").Click

PS:正则表达式怎么写你再斟酌下吧~尤其是要包括第一次点的情况与第nnn...次点等情况~
作者: owelowel    时间: 2008-3-25 17:23
还处在学习阶段``````嘿嘿```
作者: stringw    时间: 2008-3-25 17:37
直接改属性当然是不行的。。。
你有先点参数化的那个按钮,在正则表达式那里打勾,然后再写表达式么。。。


我点了那个参数化,那个勾也打了。

PS:正则表达式怎么写你再斟酌下吧~尤其是要包括第一次点的情况与第nnn...次点等情况~


这句话是不是说位数不够?暂时我认为两位数字就够了。

Browser("****").Page("***").Link("innertext:=网友评论([0-9][0-9])").Click

这句也不能用。。。。
作者: hsjzfling    时间: 2008-3-25 18:08
原帖由 stringw 于 2008-3-25 17:37 发表


这句也不能用。。。。

那报什么错?贴出报错的原文~
作者: flyfly310    时间: 2008-3-25 19:35
其实你的问题就是
由于button的属性每次都会变,你需要对他的属性进行参数化
可参照
http://bbs.51testing.com/thread-104648-1-1.html
作者: kissing    时间: 2008-3-27 14:17
只要按钮位置不变 用虚拟对象即可 记住类型是button型
作者: machao514    时间: 2008-3-28 13:28
原帖由 stringw 于 2008-3-25 15:30 发表
我做的是web测试,页面是一个用java编写的table控件,但table按钮上的名字后面用括号加了一个点击次数,点击次数是个变量,回放时点击次数已经加一,结果名字就变了,QTP无法再次识别这个按钮了。
我试过把它定义为 ...


可以用GetRoProperty这个方法,如:
buttonName = …….table("index").GetRoProperty("name")
…….table(buttonName).click

你根据这个自己理解,应该就可以,“……“代表table按钮的父对象操作。
作者: stringw    时间: 2008-3-28 17:33
<quote>只要按钮位置不变 用虚拟对象即可 记住类型是button型</quote>
这样不行,我试过了。仍然是报无法识别这个对象的错。
我在流程中找到默认这个按钮就是打开的页面,所以暂时回避了这个问题。不用去点击它。
谢谢大家的帮助。
我会继续尝试别的方法,有结果的话,我一定会发上来。
作者: dftx511619    时间: 2008-3-28 23:55
是否可以考虑下  正则表达式?




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