51Testing独家连载:(二十五)精通QTP——自动化测试技术领航

发表于:2012-1-12 10:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:余杰 赵旭斌    来源:51Testing软件测试网

  如图1-177所示,该位置就是虚拟对象,存在两个功能,新增虚拟对象和管理虚拟对象。作者在这里不对此功能多做介绍,因为并不推荐这个方法,即使依赖虚拟对象解决了所有不能识别的对象,但以后的对象维护工作是根本没法继续下去的,而且虚拟对象本身就非常脆弱,即使对象没有发生变化,但是,只要对象在界面上的方位发生变化,虚拟对象就会识别失败。所以,读者只需要了解一下这个功能就可以了,感兴趣的读者不妨尝试着亲自设置一些虚拟对象。

  (2)使用相对坐标然后配合WSH去定位对象。

  当碰到对象无法识别的时候,还可以通过这种办法尝试解决。因为即使是一个WinObject对象,它仍然有坐标,所以,使用相对坐标则可以帮助动态定位对象的位置,然后再使用WSH去对这个WinObject做一些操作(当然,这些操作不可能非常全面)。还比如,虽然对象无法识别,但是它支持快捷键操作,比如使用“Ctrl+O”的快捷键组合可以打开某个东西,遇到此类情况,也可以使用WSH来巧妙地完成想要完成的业务(虽然对象仍然是不能识别的,但是只要能达到预期目标,任何方法都是好方法)。关于WSH的知识点会在后续的章节中详细介绍。在本小节中,读者只需要知道常见的对象无法识别案例和相应的解决方案即可。

  (3)使用DOM组件接口应用技术。

  DOM的全称是Document Object Model。这种办法只可用于Web项目。举个例子,淘宝网的密码输入框用正常的Set方法是无法操作的,此时就可以调用DOM的GetElementById方法,然后进行密码输入的操作。DOM也会在后面的章节中详细介绍,这里不多做阐述。

  (4)使用QTP自定义扩展SDK Customer来进行二次开发使QTP能够识别对象。

  这个属于QTP中最高深的技术。目前关于此方面的技术文章在QTP学习网站中都是非常少的。本书的作者曾录制过两个教学视频介绍此方面内容,如果读者有兴趣可以联系本书的两位作者,在本书的末尾有作者的联系方式。

  (5)开发提供专属插件。

  作者曾经有过类似的自动化测试项目经历,对象基本都无法识别,但是自动化测试需要做下去。于是开发了专职对象识别脚本,然后利用QTP这个平台去执行自动化测试。像这种情况,其实自动化测试的主力就已经不再是QTP了。

  (6)把无法识别的对象的一些方法封装到一个dll中并使用QTP调用。

  这个方法和上面的有所区别,自动化测试主力仍然是QTP,在QTP中有一个Extern对象,这个对象就是专门司职外部dll调用工作的,开发只需要把各种方法封装成一个dll即可,关于调用外部dll的技巧同样会在后面的章节中介绍到。

  2.对象可以被QTP识别,但是加载的插件不正确

  发生这种情况总体来说还是幸运的,因为毕竟这也许只是一个误操作,只需要重新加载相对应的正确插件,QTP就可以为你服务了。

  3.同一个界面中存在两个或两个以上的属性相同的对象

  有这么一种情况,同一个页面中存在多个属性相同的对象,这种时候QTP会报错并在报错信息中提示我们。像遇到这种问题时,最直接的解决办法就是为每一个对象做一个唯一标识符,最常见的就是设置Index。

  4.实际运行时的对象发生了改变导致与对象库不匹配

  在自动化测试过程中,很多对象都是动态的,在运行时,属性是一直在发生变化的,比如句柄。碰到类似的问题,解决思路就是先动态获取运行时的值,然后将这个值动态添加到对象库对象中,这样就可以轻松解决该问题了。如何动态获取运行时的值,如何将值动态添加到对象库对象中,这些都是前面的重点内容,读者如果有所遗忘,请重新回顾!

1.6.6  总结

  本章节和上一个章节不同,主要是围绕如何去实现脚本。这两个章节合起来几乎涵盖了对象库编程所有的精华部分,读者务必要学精、学透。作者已经给了方法,接下来就是要通过大量的实践和反复的练习真正地驾驭好它。

  对象库编程的确是相当好用的,QTP高效编程的3种方式也都是基于对象库的,这些高效的方法是不基于在下面的章节会介绍的描述性编程的。所以,一般情况下,作者建议使用对象库编程。

54/5<12345>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • Jackyi7321
    2013-6-14 11:13:58

    (1)将Title和Tab变成“QTP自动化测试技术领航”。
    (4)将搜索框禁用(无法输入任何文字)。
    这两个实在是找不出答案,求解

  • azhoulujiare
    2012-4-13 17:11:40

    封装接口是对象的不完全属性,那自身接口是对象的完全属性吗?

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号