对qtp无法识别对象的解决办法很多,现使用到的有以下五种:
1.低级录制(不建议使用)
2.虚拟录制(慎重使用)
3.描述编程
4.对象映射
5.objectidentification
详解
1:低级录制
automation->lowlevelrecording/anlogrecording,记录屏幕的相对位置,维护性比较差
2:虚拟录制
tools->virtual objects->new virtual object/virtual object manager
new virtual object:新建虚拟对象
virtual object manager:对已经建立的虚拟对象的管理
新建虚拟对象:new virtual object->next->选择虚拟对象(object,button,table,list,check box,radio button)->next->mark object...(标记需要虚拟的对象)->next(标识所有出现的虚拟对象,请选择“parent only”;仅标识一次出现的虚拟对象,请选择“entire parent hierarchy";默认选择“parent only”)->next(指定虚拟对象的名称和集合)->完成
注:a:可以通过virtual object manage来管理(添加/删除)虚拟对象
b:如果希望quicktest在录制时识别虚拟对象,请确保清除“选项”对话框的“常规”选项卡中的“录制时禁止识别虚拟对象”复选框(tools->options->general->uncheck(disable recognition of virtual objects while recording))
3:描述性编程
用描述性编程来优化脚本时,刚开始有点麻烦,成型后可以解决很多实际问题,比如:控件不识别,动态识别控件等等。平时录制脚本时,qtp会自动生成一个对象库,来定位识别对象,如果对象库管理不善,比如丢失等等意外潜在因素,会造成脚本因对象无法识别而失败;而描述性编程,直接用对象的唯一性属性来定位对象,脱离了对象库概念,解决了潜在因素,而且使用起来也很灵活,缺点是识别对象的速度比录制识别对象的速度要慢很多。个人认为,有时候牺牲一些性能来提高稳定性是有必要的。
使用方法:
a:直接使用:browser("name:=xxxx").page("title:=xxxxx")....
browser("name:=xxxx","title:=xxxx",.....).page("title:=xxxxx","htm id:=xxxxx",...)....
b:间接使用
dim des
set des =description.create
des("name").value="xxxxx"
des("title").value="xxxx"
browser(des).page("title:=xxxxx","htm id:=xxxxx",...)....
具体在开发时使用哪种自己来调度,这里需要注意的是,父对象描述化了,子对象可以随便,但是子对象描述化了,父对象一定要描述化。
4:对象映射和objectidentification
tools->object identification->user-deined..(标准对象的映射)
->在这个界面上可以更改对象的识别属性,可以解决一些对象不识别的问题,具体的可以试试
1.低级录制(不建议使用)
2.虚拟录制(慎重使用)
3.描述编程
4.对象映射
5.objectidentification
详解
1:低级录制
automation->lowlevelrecording/anlogrecording,记录屏幕的相对位置,维护性比较差
2:虚拟录制
tools->virtual objects->new virtual object/virtual object manager
new virtual object:新建虚拟对象
virtual object manager:对已经建立的虚拟对象的管理
新建虚拟对象:new virtual object->next->选择虚拟对象(object,button,table,list,check box,radio button)->next->mark object...(标记需要虚拟的对象)->next(标识所有出现的虚拟对象,请选择“parent only”;仅标识一次出现的虚拟对象,请选择“entire parent hierarchy";默认选择“parent only”)->next(指定虚拟对象的名称和集合)->完成
注:a:可以通过virtual object manage来管理(添加/删除)虚拟对象
b:如果希望quicktest在录制时识别虚拟对象,请确保清除“选项”对话框的“常规”选项卡中的“录制时禁止识别虚拟对象”复选框(tools->options->general->uncheck(disable recognition of virtual objects while recording))
3:描述性编程
用描述性编程来优化脚本时,刚开始有点麻烦,成型后可以解决很多实际问题,比如:控件不识别,动态识别控件等等。平时录制脚本时,qtp会自动生成一个对象库,来定位识别对象,如果对象库管理不善,比如丢失等等意外潜在因素,会造成脚本因对象无法识别而失败;而描述性编程,直接用对象的唯一性属性来定位对象,脱离了对象库概念,解决了潜在因素,而且使用起来也很灵活,缺点是识别对象的速度比录制识别对象的速度要慢很多。个人认为,有时候牺牲一些性能来提高稳定性是有必要的。
使用方法:
a:直接使用:browser("name:=xxxx").page("title:=xxxxx")....
browser("name:=xxxx","title:=xxxx",.....).page("title:=xxxxx","htm id:=xxxxx",...)....
b:间接使用
dim des
set des =description.create
des("name").value="xxxxx"
des("title").value="xxxx"
browser(des).page("title:=xxxxx","htm id:=xxxxx",...)....
具体在开发时使用哪种自己来调度,这里需要注意的是,父对象描述化了,子对象可以随便,但是子对象描述化了,父对象一定要描述化。
4:对象映射和objectidentification
tools->object identification->user-deined..(标准对象的映射)
->在这个界面上可以更改对象的识别属性,可以解决一些对象不识别的问题,具体的可以试试