‘壹’ qtp对象库里的东西怎么来的,主要有哪几种生成方式
怎么来的我不知道,QTP自己根据对象的属性、值、方法等等封装的存放到对象库中的,一般都是用的封装的对象,当然有时也用自身接口的对象。1、生成方式有录制,这不用说也知道;2、还有就是Object spy 工具从页面抓取;3、接下来就是自己写对象的属性和值,也就是自己创建了,一般不建议这么做
‘贰’ qtp获取对象
不知道这样会不会报错。我觉得应该会。因为QTP识别对象时,不能唯一识别(如果设置了智能识别为false,这样会报错;如果设置智能识别为true,则会根据它的选择给你返回一个对象,不能根据用户的选择来定位)
我觉得可以利用set objs=document.getElementsByTagName("...");然后利用循环,长度使用objs.length读取,判断objs.innerTEXT="重庆分公司"来计算个数。
如果有其他法子的话,希望楼主可以共享下。谢谢
你要知道这个的确看起来的东西
‘叁’ QTP的对象库到底有什么作用呢没有对象库管理又有什么影响呢求解
对象库中可以存放不易识别的对象属性,下次回放时自动运行脚本,不至于每次都在此对象时脚本停止运行。
这是其一好处。
‘肆’ QTP支持两种类型的对象库是什么
个软件开发过程,需要经历各类分析、测试计划、框架及测试用例设 计、脚本开发、测试执行、提交报告、脚本维护、版本控制等一系列过程。 4.QTP 操作步骤: 录制脚本-->编辑脚本-->调试脚本-->运行脚本-->分析测试脚本 5.自动测试适用的场合: 回归测试、更多更频繁的测试、手工测试无法实现的工作、重复性很强的操作、跨平台产品 的测试。 6.手工测试: 手工测试比自动测试发现的缺陷更多、 对测试质量的依赖性极大、 测试自动化可能会制约软 件开发、工具本身并不具有想象力、人工测试比测试工具优越可以处理意外事件。 7.自动化测试工具的分类: 功能测试工具、性能测试工具、测试管理工具、其他测试工具。 8.QTP 的安装插件: 默认提供 Web,ActiveX 和 VB 。 (QTP 及其插件安装仅支持英文路径。 ) 9.QTP 工作原理: QTP-->录制-->QTP 记录-->回放-->对比-->结果。 10.3 种录制模式 (1)正常录制模式:QTP 默认的录制模式,直接对对象的操作; (2)模拟录制模式:录制了所有键盘和鼠标的精确操作; 优点:录制正常录制模式不能录制到的动作; 缺点:录制脚本比较大,不可以由 QTP 编辑; (3)低级录制模式:录制 QTP 不能识别的环境或对象; 优点:记录坐标的位置,可以对 QTP 不支持的对象进行坐标记录。 11.QTP 回放机制 回放机制是封装对象与真实对象的匹配; QTP 根据脚本中记录下来的对象操作的顺序进行回 放。 12.QTP 的两种视图 Keyword View(关键字视图)、Expert View(专家视图) 13.对象库定义: QuickTest 测试对象库是类或对
‘伍’ QTP如何判断对象是否存在
1. 判断getElementById("")获取的对象存不存在
方法一:可以通过错误处理来实现
On Error Resume Next
getElementById("")的操作
(注意:如果是用set obj = object. getElementById("") 时,即使 object. getElementById("") 为空,也会返回一个nothing值,因此,Err.Number会等于0。因此如果是直接判断对象的话,还需要和 is nothing配合使用。)
(而如果直接是对象的相关操作的话,就不用和is nothing结合使用了。如使用value = object. getElementById("") 如果对象不存在,Err.Number就会不等于零了,因此可以直接判断了。 )
On Error GoTo 0
If Err.Number < 0 Then处理Err.ClearEnd If方法二:用is nothing来判断
注意,不能用is not nothing,否则如果对象为空则会报错。
If object. getElementById("") is nothing Then处理End If方法三:用Err 和is nothing结合来判断
最好是编写独立的函数,这样有关Err的配置就不会影响到大程序中有关Err的设置了。
可以用Err来保证判断不会报脚本错误,用is nothing来判断对象不为空。
2. QTP内置支持的对象存不存在判断
对于QTP内置支持的对象(如,Browser)不能使用is nothing来判断是否存在,因为即使对象不存在,也会返回一个值的。
例:Set objBrowser = Browser(“name:=不存在”)
即使Browser是不存在的,也会返回一个“CoBrowser”对象,这时objBrowser就不会等于nothing了。因此objBrowser is nothing 的值会永远为false的。达不到判断对象是否存在的效果。
解决方法:使用Exist,如下:
Dim chkBrowser
‘陆’ 怎样使qtp脚本语言不用坐标形式标识
QTP支持录制和回放的功能。录制产生的脚本,可以拿来作为自己编写脚本的template。录制时,还支持一种lower level 功能,这个对于QTP不容易识别出来的对象有用,不过它是使用坐标来标识的,对于坐标位置频繁变动的对象,采用这种方式不可行。另外,QTP的编辑器支持两种视图:Keyword模式和Expert模式。Keyword模式想法是好的,提供一个 描述近似于原始测试用例的、跟代码无关的视图(我基本很少用,除了查看、管理当前test中各个action的完整流程),而Expert就是代码视图,一般编写脚本都在这个区域。
4)一个有用的工具:Object Spy,可以用来查看Run-time object和Test object属性和方法。
5)QTP通过三类属性来识别对象:a)Mandatory; b)Assistive; c)Ordinal identifiers。大部分情况下,通过对象的一些特定属性值就可以识别对象(类型a)。这些属性可以通过Tools->Object Identification 定义。
6)Object Repository(OR)是QTP存储对象的地方。测试脚本运行后,QTP根据测试脚本代码,从这个对象库中查找相应对象。每个Action可以对应有一个或者多个OR,也可以设置某个OR为 sharable的,这样可以供其他Action使用。注意,使用QTP录制功能时,默认将被测对象放在local OR中,可以通过 Resources->Object Respository,选择Local查看。
‘柒’ 如何管理QTP中的对象库
使用QTP录制一些脚本再回放,这不难,难的是一个测试团队共同开发脚本,并能不断的完善脚本,创建一个结构化的自动测试脚本体系。这篇文章重点讨论的是,如何管理QTP的对象仓库,以便能让对象仓库易于维护、管理。如果只是简单的录制、回放脚本,可能感觉不到对象仓库的存在。但是要做到QTP脚本的结构化管理,就必须对QTP的对象仓库进行严格的管理。在实际工作中我们发现,QTP脚本做好后绝不是一成不变的,而是随着需求和页面的变化,需要不断修改的。如果每次修改脚本的时候,都重新录制脚本,成本极高,所以最有效的方法是,先修改对象仓库,然后修改脚本,以适应新的系统。如果对象仓库里的管理比较混乱的话,修改脚本时就会遭受地狱般的痛苦,比如n多对象全堆在一起根本理不出头绪,对象的命名不知所云,找不到自己需要的对象等等。下面我们讲一下如何管理对象仓库,避免这些问题。先介绍一下对象仓库中的对象层次,主要分为3个层次1、Browser浏览器2、Page页面3、页面中的各种对象,比如Link、ButtonBrowser对应的是已经打开的IE窗口对象,Page对应的是不同的网页,比如登录首页是一个Page,登录成功后跳转到我的淘宝页面,这就是另一个Page.而页面中的各种对象就比较好理解了,图片、按钮、链接都是对象。了解了对象层次,我们再讲一下命名。如果QTP在录制过程中自动记录对象,命名是非常乱的,缺乏逻辑性,经常看到一个Browser下面有n多“淘宝网_1”、“淘宝网_2”这样的Page,这对我们以后的管理非常不利。与其修改这些命名,我们不如用一种思路更清晰的方式,手动添加对象。QTP中有一个工具实现了对象仓库的管理,Object Repository Manager,我们用它来添加对象。操作很简单,直接点击toolbar中的Add Object按钮,然后在web上点击你需要添加的对象即可,添加过后再修改名称。更新对象也比较简单,先选中需要更新的对象,然后点击Update from Application即可。这项工作其实可以在系统页面出来以后就开始做,我们一边进行手工测试,一边把对象添加起来,为后面的脚本开发做准备。这时暂时不制作脚本。总结一下,对象仓库的管理要满足以下几个原则: 1、每个Browser下的Page不要太多,最好不要超过5个,即使我们的系统都在同一个IE窗口下(没有弹出新IE),我们也可以分几个Browser管理,把业务上关联较强的几个Page放在一个Browser下; 2、每个对象都按照所代表的业务属性命名,最好用中文,不要出现一些难理解的字符,比如abc这样的。3、尽量避免在一个tsr文件中堆放过多的对象,最好根据业务,把对象分为几个tsr文件保存。这里没有统一标准,以每个tsr文件结构清晰为宜。现在我们完成了对象仓库的整理,好,可以开始制作脚本了。
‘捌’ 如何查看QTP对象的属性列表
查看QTP对象的属性列表方法有两个,以下分别说明。
方法一:对象仓库绿色加号图标
通过单击"录制"按钮,将对象录制到对象仓库中,依此单击"Resources"-->"Object Repository"菜单项,
系统弹出"Object Repository-All Object Repositories"对话框,单击左侧对象层级目录节点中指定的对象节点,在右侧对象属性区域,点击绿色加号按钮,
系统弹出"Add Properties"对话框,属性列表区域列举属性信息,
方法二:QTP中的工具ObjectSpy
可以依此单击菜单项"Tools"-->"Object Spy...",
或者在工具栏中单击带礼帽小人图标按钮,
弹出"Object Spy"对话框,
例如,需要获取如Flight按钮对象的属性,具体操作为,先单击小手图标按钮,光标变为小手形状,只能显示当前窗口小手光标所处位置对象的属性,如果需要显示非当前窗口对象属性,需要按住键盘ctrl键,此时光标从小手形状变回箭头形状,直到要识别的对象显示到当前页面,方可停止按住键盘ctrl键,然后光标由箭头再次变为小手形状,此时再将小手光标移至待识别的Flight按钮对象处,然后单击该Flight按钮对象处,即可显示该对象的属性信息,详见。
‘玖’ qtp对象仓库的作用和分类是什么
QTP
Object
Repository的作用,简单的来说,就是储存QTP各Object以及其识别属性,从而在被测应用程序中找到对应的唯一的对象。可以从QTP的对象识别机制来理解。
举个例子:
Browser("Google").Page("Google").WebEdit("q").Set
'Bai'
在执行这句代码时,QTP先会去对象库中找Class为Browser且Name为Google的对象,然后在该Browser的子对象中找Class为Page且名字为Google的对象,同样再找到名叫q的WebEdit对象,这样就完成了第一步:在对象库中找到代码所对应的对象;
然后再根据对象库中该对象(包括其所有父对象)的属性去当前应用程序中去寻找匹配的对象,次序也是Browser->Page->WebEdit;最后一步就是在应用程序中执行QTP封装的Set操作。
至于分类,QTP8.2及以前版本可以分为普通的对象库(只供当前Action使用)与共享对象库(可以供整个Test公用);而9.0及以后的版本取消了共享对象库的概念,增加了关联对象库,及可以将普通的对象库导出为tsr文件,通过对象库管理器进行合并等等操作(Optional),可加入到Test的关联对象库文件中,以供Test指定的某个或多个Action使用。关联对象库可以和Action自身的本地对象库同时使用,可以更灵活的满足各种需要。
‘拾’ QTP录制完脚本后,测试的时候总是显示某个地方对象不可见
在脚本运行停止的地方添加断点,HighLight看看当前对象在界面中是否存在