51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4296|回复: 4
打印 上一主题 下一主题

[Robot] Robot中如何识别下拉框中的内容

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-12-19 15:59:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在录制教本回放时不能识别下拉框中的内容.
例如:
Window SetContext, "Caption=Workplace: Search Designer - Microsoft Internet Explorer", ""
    Browser SetApplet,"JavaClass=WcmSearchAuthApplet",""
    JavaTable Click, "Type=JavaTable;Index=1", "StartColTitle=Property;Row=1;Coords=180,12"
    ComboListBox Click, "Type=ComboListBox;Index=3", "Text=efText_wpString"
哪位大侠知道如何解决呀.急急急!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-12-20 13:22:26 | 只看该作者
是想要读取所有下拉框中的内容吗?还是想获取选择后的下拉框内容?如果仅仅只是想从下拉框中随机选择一个值那么还是用"{DOWN}","{UP}" 这种按键形式进行选择也是可以的
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2007-12-27 15:44:57 | 只看该作者
是想获取选择后的下拉框的内容.我可以用"{DOWN}","{UP}" 获得的是随机值,我想找一个特定的值.而且我通过inspector只能识别出java控件的值,对于下拉框他识别不出来.郁闷中.
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-12-27 18:52:11 | 只看该作者
如果是想读取下拉框中所有的值并以此来判断并选择这个你需要的特定值在ROBOT中我总结以下几点:如果你的程序是.net做的话有时录制下来你会发现选择下拉框中的某一值的那一行语句是这样的:ComboListBox Click, "Type=ComboListBox;Name=AppUserManager$formView$newSex", "Text=生产部",这种情况下是最好说的,只需要在脚本中把“Text=生产部”改成你想到选择的值就可以了。但如果是JAVA开发的,当你用ROBOT录制下来后,你会发现选择下拉框中的某一值的那一行语句有可能是这样的:ComboListBox Click, "ObjectIndex=0", "ItemData=52307764",这中间因为ROBOT对像识别的关系是不能够像.net录制的语句那样,也不可能像那样去变通的。注意"ItemData=52307764"这个参数,实际上这个参数是动态分配的,它代表了下拉框中的某一个值。该值是动态录制下来的,当页面刷新过后原先选择的该值便不能再次选择到,因为该值已经改变。但是如果你试图获取该下拉框所选择的实际值时这时会发现你所获取的总是该下拉框中所有的值。通过ROBOT中的Object properties工具查看发现该下拉框的参数属性有以下这些:
innerText: (下拉框中所有值)
length:  59
multiple: False
name: columnCode
selectedIndex: 21
size: 0
tagName: SELECT
type: select-one
value: 110113
其中innerText参数里便是下拉框的值了。你可以用sqagetproperty()来获取该属性的值,但获取下来后发现基本没用。因为不论当你是否在该下拉框中选择了实际值没有它始终获取的是全部的下拉值。又不可能通过字符串处理操作来处理分析出你想选择的值究竟是在第几行,因为那是没有任何根据的。这时注意观查一下selectedIndex、value这两个参数,第一个参数是指你的当前选择值的index也就是你选择了第几行参数的值。而value参数里则存放了你选择的当前值的value值,这个值是固定且唯一的。这时候解决办法就来了,如下根据value来解决:
比如有个下拉选择框A,A下分别有“选择一”“选择二”“选择三”这三个下拉值可供选择。而又比如你想每次程序运行时都自动选择的“选择三”这个值,解决思路是:
先获取选择三这个值的value固定参数的值,比如是100231
Dim str1,select_V as string
Dim o as integer
str1 = ""
For o=1 to 3
   str1 = str1 + "{DOWN}"
   inputkeys str1
   SQAGetproperty("","",select_V)   rem具体该方法的使用在哪里都不相同在这里省略了具体用法
   if select_V = "100231" then
      exit for   
   end if
Next o

这样就可以实现你选想要选择的特定值了。但是这个方法用起来会使你的程序变慢。因为需要每个下拉值都进行选择再读取。直到选择到了你所相对应的值为止。如果下拉值过少的话可以考虑该方法。另外在用该方法前最好可以灵活的得到你想要值的value参数值这也是很重要的。先说到这里。还存在另一种情况下次再讲出来。希望对你有帮助。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-1-4 16:15:23 | 只看该作者
谢谢你详细地解释!我们的程序是用java写的,我用inspector 和Object properties都不可以识别出来控件的selectIndex和value值。我在录制时的结果是:

Window SetContext, "Caption=Workplace: Search Designer - Microsoft Internet Explorer", ""
    Browser SetApplet,"JavaClass=WcmSearchAuthApplet",""
    JavaTable Click, "Type=JavaTable;Index=1", "StartColTitle=Property;Row=1;Coords=174,7"
    ComboListBox Click, "Type=ComboListBox;Index=3", "Text=BalanceDueEmp"

详细的页面和object properties请参见附件!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-25 05:29 , Processed in 0.073771 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表