51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5640|回复: 21
打印 上一主题 下一主题

[原创] 【对象库】突然对你又爱又恨

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-4-8 15:32:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
爱你的简单快捷,录制简单,操作方便,入手快。也很简单的突出了脚本语言的优势...
        恨你的管理太过潦倒,对象一多,管理麻烦;如果使用函数去调用,会出现了以后这个函数在其他项目中的通用性差。例如现在这个函数中调用对象库中的对象。那么下次有其他项目,你要使用这个函数去调其他对象库,那么你就要去修改其他项目中的对象库的对象属性等。
    函数的可重复使用,也是衡量一个函数的价值所在。
        星期前写的很多个函数,因为对象库的更改都用不上了,要么就优化函数,要么就修改新录制的对象属性。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-4-8 16:10:52 | 只看该作者
不明白楼主的意思。看来我的功力不够呀。要加紧修炼了。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-4-8 19:03:03 | 只看该作者
可以写几个函数 专门对函数中用到的对象做初始化设置呀
不过如果你把最底层的对象也写到函数中 那就没办法了,那些对象太多了
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2008-4-8 20:46:33 | 只看该作者

我有这样的一个问题,现在我的程序如果是通过“录制和运行。。。”那个设置,让它先把前台跑起来,就能够识别到对象。
但如果用过代码把程序走起来,就会发现对象无法识别。
大家有谁遇见这种问题。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-4-10 13:59:35 | 只看该作者
"但如果用过代码把程序走起来"这句话的意思不太懂,是不是“通过代码控制运行”。 而不是通过qtp中"Run", 来控制呢。
但是我想,无论哪种,都得在qtp平台上。找不到就说明对象库中没有。可以看看对象库。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2008-4-10 14:49:57 | 只看该作者

情况这样的:
如果第一次是共享对象库,直接通过运行SystemUtil.Run,就会出现对象无法识别。
第2次,把那句去掉后,然后直接在QTP中设置运行,那么起来对象就可以识别到。
第3次,把QTP中的设置运行去掉,再通过SystemUtil.Run对象却又可以设别到了。
.....
把QTP关了再开,再用第3步的,又不行了。我晕
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2008-7-24 08:17:28 | 只看该作者
对象库啊对象库
楼主说的这种又爱又恨的心情,我想大家都有

但最终还是爱大于恨吧,希望对象库在未来的版本中有更好的改进和提高
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-7-24 08:49:14 | 只看该作者
额,搂主的问题貌似我好像常遇见
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2008-7-24 10:20:19 | 只看该作者

回复 8# 的帖子


现在没有了,因为现在基本都不用对象库了....
不过对象库用到高手了,这些问题都没什么问题。哈哈,不过我还不是。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2008-7-24 10:56:00 | 只看该作者
原帖由 假装不在 于 2008-7-24 10:20 发表

现在没有了,因为现在基本都不用对象库了....
不过对象库用到高手了,这些问题都没什么问题。哈哈,不过我还不是。



难度你现在写脚本都是用spy手工一条条去写?

再高的的高手也改变不了对象库的机制啊!只要用对象库就会面临管理对象库的问题。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2008-7-24 11:04:07 | 只看该作者

手工写多好呀,写一次,以后都可以用。移到别人机器上,有时候QTP对对象的识别会不一样,这东西瞒怪的。
就例如第一次在你的电脑设别到的是一个vb的控件。
在别人电脑上识别到的是winobject,脚本自然也就跑不起来,又得修改另一台电脑的环境更甚至你不知道到底是哪里出了问题,重装后也都还一样,时间就浪费在这里的,别人看来,你的脚本太蹩脚了,效率也低。看就有够你折腾的。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2008-7-24 11:16:55 | 只看该作者
yabest看到了,又要反击了哈哈。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2008-7-24 11:50:31 | 只看该作者
说yabest,yabest就到!我来也~~

假装不在,具体说说看,对象库怎么让你不爽的,怎么会影响函数复用性了?想办法解决,不要因噎废食啊!
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2008-7-24 11:55:50 | 只看该作者

有马甲...或者有人通风报信..嘿嘿。
其实不爽的,例如因为环境的更换,导致了对象库中的对象无法识别。
就和我在11楼中说到的,
例如在自己电脑识别出来的对象,自己也录制完了,丢在对象库中。
但是到了其它人的电脑里,要跑这脚本,对象却无法识别。
不过现在我这边倒也很少出现这样的情况,或者是因为对这玩意认识提高了。
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2008-7-24 15:40:15 | 只看该作者
原帖由 假装不在 于 2008-7-24 11:55 发表

有马甲...或者有人通风报信..嘿嘿。
其实不爽的,例如因为环境的更换,导致了对象库中的对象无法识别。
就和我在11楼中说到的,
例如在自己电脑识别出来的对象,自己也录制完了,丢在对象库中。
但 ...


这个环境变化,对象无法识别的问题,跟对象库无关吧,你用描述性编程也是一样的。

QTP做界面测试,对界面环境变化比较敏感,最好还是选用一个标准的QTP Server,大家都用终端服务或远程桌面连接上去,都在里面开发和执行QTP,可以避免很多无谓的环境变化问题,节省大量的精力!

[ 本帖最后由 yabest 于 2008-7-24 15:43 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2008-7-26 12:22:46 | 只看该作者
yabest,
http://bbs.51testing.com/viewthr ... p;page=1#pid1029479
那天我脑袋发热,突然写了这段话,指点指点。
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2008-7-26 13:15:44 | 只看该作者
呵呵,前两天刚好也遇到类似烦恼,开始使用关联对象库,可以解决在本机运行的问题。
但使用关联对象库时,在其他机器运行时会提示关联对象库不存在,解决办法是先关联,然后把对象从关联对象库拷贝到Local对象库。
感觉自己的解决办法也挺傻的,抛砖引玉。

[ 本帖最后由 summitwk 于 2008-7-26 13:17 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2008-7-26 22:14:40 | 只看该作者
对象库 vs 描述性编程, 建议大家好好看下QTP帮助里对描述性编程的阐述和定位

Using Programmatic Descriptions

When you record an operation on an object, QuickTest adds the appropriate test object to the object repository. Once the object exists in the object repository, you can add statements in the Expert View to perform additional methods on that object. To add these statements, you usually enter the name (not case sensitive) of each of the objects in the object's hierarchy as the object description, and then add the appropriate method.

For example, in the statement below, username is the name of an edit field. The edit field is located on a page with the name Mercury Tours and the page was recorded in a browser with the name Mercury Tours.

Browser("Mercury Tours").Page("Mercury Tours").WebEdit("username")

Because each object in the object repository has a unique name, the object name is all you need to specify. During the test run, QuickTest finds the object in the object repository based on its name and parent objects, and uses the stored test object description for that test object to identify the object in your Web site or application.

You can also instruct QuickTest to perform methods on objects without referring to the object repository or to the object's name. To do this, you provide QuickTest with a list of properties and values that QuickTest can use to identify the object or objects on which you want to perform a method.

Such a programmatic description can be very useful if you want to perform an operation on an object that is not stored in the object repository. You can also use programmatic descriptions in order to perform the same operation on several objects with certain identical properties, or in order to perform an operation on an object whose properties match a description that you determine dynamically during the run session.

For example, suppose you are testing a Web site that generates a list of potential employers based on biographical information you provide, and offers to send your resume to the employer names you select from the list. You want your test to select all the employers displayed in the list, but when you design your test, you do not know how many check boxes will be displayed on the page, and you cannot, of course, know the exact object description of each check box. In this situation, you can use a programmatic description to instruct QuickTest to perform a Set "ON" method for all objects that fit the description: HTML TAG = input, TYPE = check box.

There are two types of programmatic descriptions. You can either list the set of properties and values that describe the object directly in a test statement, or you can add a collection of properties and values to a Description object, and then enter the Description object name in the statement.

Entering programmatic descriptions directly into your statements may be the easier method for basic object-description needs. However, in most cases, the Description object method is more powerful and more efficient.
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2008-7-28 00:45:40 | 只看该作者
我们现在都采用类 描述性编程了
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2008-8-13 16:26:05 | 只看该作者
你可以在函数编写里,传入一些通用的对象,比如winobject。这样就可以通用了吧。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-26 22:42 , Processed in 0.083163 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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