51Testing软件测试论坛

标题: 参数化下拉列表框 [打印本页]

作者: feitotti    时间: 2006-9-26 19:15
标题: 参数化下拉列表框
情况:
        系统的下拉列表框不是正规的select标记的那种,而是这样(input标记的)
       <th class="LABEL" style="width:15%"><span class="LABEL" id="dto(alc021_in)_label"><font color=red><b>*</b></font>伤害程度:</span></th><td class="LABEL" style="width:15%" nowrap><table style='border:1px gray solid' width=100% border=0 cellspacing=0 cellpadding=0><tr><td><input type="text" name="descdto(alc021_in)" value="" codeFieldId="dto_alc021_in" data="0,死亡|1,重伤|2,轻伤|3,其它|" onfocus="fnTabIt1()" style="border:0px" isRequired="true" showMode="1" collection="ALC021" id="dto_alc021_indesc" style="behavior:url(/yhcp2/resource/javascript/slct.htc);" class="LABEL"></td><td style='width:13px' onclick="dto_alc021_indesc.click()"><span style="overflow:hidden;cursor:default;font-family:webdings;font-size:18px;color:#483D8B;text-align:center;">6</span></td></tr></table><input type="hidden" name="dto(alc021_in)" value="" id="dto_alc021_in"></td><td width="1%">&nbsp</td>
录制脚本的时候按照录制的情况选择 “3 其它”这个选项:
1 点击下拉列表的向下的箭头→鼠标停在“3”的位置点击(选择3 其它)
Browser("欢迎光临银海协同平台").Page("成都社保二版系统").Frame("mainFrame_2").WebElement("6").Click
Page("Page").WebElement("3").Click
2 点击下拉列表的向下的箭头→鼠标停在“其它” 的位置点击(选择3 其它)
Browser("欢迎光临银海协同平台").Page("成都社保二版系统").Frame("mainFrame_2").WebElement("6").Click
Page("Page").WebElement("其它").Click

请教高手们怎么参数化这个下拉列表框?回放的时候可以选择下拉框其它的值
作者: qrz2000    时间: 2006-9-27 08:52
把那个参数放到表格中,然后写个循环读表格的数据吧.
作者: xiaonan    时间: 2006-9-27 09:04
WebElement("其它").Click这边用描述性编程表示,然后就可以参数化了
作者: feitotti    时间: 2006-9-27 11:12
按照xiaonan和麦子华华的帮助做法实验了两种企图参数化的方法
均在使用描述性编程之后,提示信息:对象不支持属性或方法
1 数据库表
我在当前的action的数据表中添加了字段:txt
语句是:page("Page").WebElement("html tag=TD", "innertext=" & DataTable("txt", dtLocalSheet)).Click

2 action参数
action properties > Parameters >Input parameters中增加一个参数:txt(不知道这里怎么设置它的value,怎么只有一行呢?)
语句:Page("Page").WebElement("html tag=TD", "innertext=" & Parameter("txt")).Click

但是两种方法都提示是:对象不支持属性或方法
作者: feitotti    时间: 2006-9-27 11:39
把对象库里面“其他”这个对象的图片传上来
作者: xiaonan    时间: 2006-9-27 11:50
page("Page").WebElement("html tag=TD", "innertext=" & DataTable("txt", dtLocalSheet)).Click

晕,你能不能不要这么直接把DataTable("txt", dtLocalSheet)这样的取值也写进去啊?不能分开写的啊?先放在一个变量里,再附给它.你这样怎么去调试问题啊?最简单朴实的程序是最稳定的.
作者: feitotti    时间: 2006-9-27 17:31
已经修改了脚本

现在的是:
txt =  DataTable("degree", dtLocalSheet)
page("Page").WebElement("html tag=TD", "innertext=" & txt).Click

但是还是提示:对象不支持此方法或属性
作者: feitotti    时间: 2006-9-27 17:33
我已经在Action localsheet添加了相关字段的值
作者: feitotti    时间: 2006-9-27 17:53
编程规范的问题不影响结果啊。
作者: kissing    时间: 2006-9-27 19:52
汗...貌似我也是这样解决的,把下拉的值,放到sheet里,再读出来
作者: xiaonan    时间: 2006-9-28 09:32
你先直接弄个固定的值给它看看,
作者: skyzhu    时间: 2006-9-28 10:24
page("Page").WebElement("html tag=TD", "innertext=" & DataTable("txt", dtLocalSheet)).Click

= 前面怎么都没 "  :  "
作者: xiaonan    时间: 2006-9-28 10:34
呵呵,恩  skyzhu  比较细心啊,不愧为从51出来的啊
作者: feitotti    时间: 2006-9-28 17:38
首先要感谢xiaonan和skyzhu
现在在“=”前面都加上了“:”
错误信息:(图)

由于我才使用QTP5天。好多地方需要大家帮忙
谢谢了~~
作者: 麦子华华    时间: 2006-9-28 19:57
提示对象找不到,说明对象的描述还是有问题。
先直接把对象add到对象库,在对象库中highlight该对象,看能否找到这个对象;
如果能,改成描述方式,用固定值试试,看能否找到这个对象;
如果能,再改成参数试试。

一步一步逼近成功,我就不信搞不定它!
作者: kissing    时间: 2006-9-28 20:13
点retry..不行的话,add对象。。。
作者: walker1020    时间: 2006-9-29 10:52
标题: To feitotti
找不到对象是在运行脚本的过程中最常见的错误。你到对象库里面看看WebElement 这个对象的属性和它实际运行时的属性有什么不同,是不是对象库中识别此对象的属性的属性值在运行时有了变化,还是有什么别的原因?
作者: feitotti    时间: 2006-9-30 16:34
谢谢walker1020
现在的情况是如果用固定值
Page("Page").WebElement("其它").Click
这样是可以回放成功的。但是我就是不知道怎么参数话这个地方
对象库里面找不到webelement这个对象
我企图将这个webelement加到对象库中间却怎么都加不进去
我添加这个对象的方法是先在应用程序中点下拉列表框,出现了下拉的选项(图1)
然后QTP中Add Object,再Alt+Tab切换到应用程序界面,单击其中一个选项。
出现的对话框(图2),但是就是添加不能把这个对象添加到对象库里去
另外我用object spy,在下拉出现的page中1 重伤的位置点一下,其属性(图3)
其它的对应   2 轻伤-webelement2,
                       3 其它-webelement3,
                       0 死亡-webelement0
在下拉page的下面空白处spy,属性(图4),webelement
我比较迷茫的就是:1 怎么添加不了这个下拉动作后出现page这个对象到对象库中间
                                    2 如果参数化(回放的时候可以选择不同值进行click)是添加对象应该是webelement(?)
作者: walker1020    时间: 2006-10-12 21:51
1, 下拉动作的对象都是webelement 这一个对象,无论是 2 轻伤-webelement2, 3 其它-webelement3,还是 0 死亡-webelement0

2,你需要对表示webelement 是重伤、轻伤还是死亡的属性进行参数化。 在论坛上有不少关于参数化的帖子,请自己搜索一下。




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