51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3436|回复: 11
打印 上一主题 下一主题

[原创] 分享一下今天用QTP发现的2个比较好的方法

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-11-12 23:56:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天碰到很多问题,主要在控件识别上,有我昨天问的同一个控件名字会变的情况,也有两个控件的属性基本一样的,还有日历控件的文本框不能输入的问题。
1、ChildObjects的妙用,可以说,上面无论是同一个控件名字会变还是两个控件名称一样的问题都可以搞定。
控件会变的问题情况请看我另一个帖子里。
两个控件名称一样,我的一个页面两个webbutton,name、text等值都一样,不同的只有一个很长一串的有代码有css设置的字符串,如果用那么长一串的去用描述性编程来识别很麻烦,之前是用坐标,发现窗口移动以后识别不到了。
于是翻帮助,看到了ChildObjects,这个是我这几天一直想找的,也算是一种识别对象的方法。会返回一个控件数组。问题顺利搞定了,连控件名字会变的也搞定了,不需要知道他的名字,只要知道他是第几个就行了,下面是帮助的内容。
Sub ChildObjects_Example()
'The following example uses the ChildObjects method to find all the
'list objects on a Web page, and then to select an item in each list.

Set oDesc = Description.Create()
oDesc("micclass").Value = "WebList"
Set Lists = Browser("Mercury Interactive").Page("Mercury Interactive").ChildObjects(oDesc)
NumberOfLists = Lists.Count()
For i = 0 To NumberOfLists - 1
Lists(i).Select i + 1
Next
End Sub

2.给disabled的控件赋值。一般多为webedit,比如日历控件,点击直接弹出日历。我之前的解决办法是写了个函数帮助去点击到我想要的日期。今天忽然看到以前的老员工写的一个案例,一句话就搞定了,我实在佩服。方法就是用object.value赋值。
例如:browser().Page().WebEdit().object.value="2008-11-12"
用set是会报错的,用这个直接就把值给改掉了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-11-13 09:29:57 | 只看该作者
非常不错
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-11-13 09:44:25 | 只看该作者
不错的发现
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-11-13 09:47:03 | 只看该作者
用.net平台写的程序才能用Object吧,好象。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-11-24 14:25:32 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-11-24 15:11:25 | 只看该作者
谢谢分享
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-11-28 17:55:29 | 只看该作者

实践失败

各位回此贴的朋友,我练习了一下楼主提供的方法“ChildObjects”,可怎么都没捕捉到对象。请各位及时指教。附上我的脚本:
Set LogItem=Description.Create()
LogItem("name").value="ids"
LogItem("type").value="checkbox"
LogItem("width").value="20"
Set Checkboxes=Browser("Workssys One Network Managemen_2").Page("Workssys One Network Managemen_2").Frame("content_1").ChildObjects(LogItem)
NoOfChildObjs = Checkboxes.Count()
Reporter.ReportEvent micDone, "Number", "The number is:"&NoOfChildObjs
For Counter=5 to NoOfChildObjs-1
          Checkboxes(Counter).Set "ON"

Next
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-11-28 18:03:22 | 只看该作者
我要捕捉的是页面上所有的checkbox, 运行结果中输出变量NoOfChildObjs的值却为0
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2008-11-28 18:22:08 | 只看该作者
回楼上:
你指定的属性太多了,ChildObjects是获得一类对象,然后去遍历这个数组,实现目的。如果用太多的属性,就会失去意义。而且描述时最好用类名,如lz的“WebList",这样就把所有的weblist都取出来了。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-11-28 18:24:37 | 只看该作者
“只要知道他是第几个就行了”,如果已知是第几个,添加个index属性去识别就好了啊?为什么还去用ChildObjects?
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2008-12-1 14:29:11 | 只看该作者
谢谢“jifeng”的解答;去掉了一些描述属性的确成功了,可按所说的提醒用类名,想把所有页的都取出来确没有成功,不知是要怎么操作?是在描述中加上
LogItem("Class Name").value="WebCheckBox" 吗?(不成功)

现在没取类名,取到的结果只是能取到当前页中的webcheckbox
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2008-12-9 17:50:11 | 只看该作者
怎么各位大侠没人关注小的的问题了那。能否用ChildObjects遍历出所有页面里的checkbox,现在我实现的结果是只能找到当前页的。急盼各位指教!!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-26 16:43 , Processed in 0.080178 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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