注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

widebright的个人空间

// 编程和生活

 
 
 

日志

 
 

QTP识别JAVA界面元素的大概技术原理  

2010-07-14 22:55:06|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在Eclipse里面调试程序,竟然也会出来QTP的输出信息,就去看了一下

我装QTP时是选了java程序界面的支持的,所以见到这个信息了。
Letting agent QTJA do the transformation
Letting agent QTJA do the transformation
Letting agent QTJA do the transformation
Letting agent QTJA do the transformation
Letting agent QTJA do the transformation
Loading HP QuickTest Professional Java Support (version 10.0.2300.0) (SUN 1.6.0_20)

大概猜测了一下,QTP的java插件应该是随着java程序的启动而启动的了。
===================================
看了一下系统的环境变量,增加了这几项,应该就是QTP的设置了。

_JAVA_OPTIONS -Xrunjvmhook -Xbootclasspath/a:C:\PROGRA~1\HP\QUICKT~1\bin\JAVA_S~1\classes;C:\PROGRA~1\HP\QUICKT~1\bin\JAVA_S~1\classes\jasmine.jar

JAVA_TOOL_OPTIONS -agentlib:jvmhook


IBM_JAVA_OPTIONS


用java -help看了一下,-agentlib 是java启动的agent选项来的,说的不是很清楚。
====================================
搜索了一下java agentlib,在Google上找到这里
http://download.oracle.com/docs/cd/E17476_01/javase/1.5.0/docs/guide/jvmti/jvmti.html#starting


原来这个技术叫做“JVMTM Tool Interface“ ,上面那个网页有详细的介绍。其实就是可以通过-agentlib 参数和JAVA_TOOL_OPTIONS 环境变量定义了一个标准的接口,可以让你自己的”agent“随着jvm的启动而启动,然后在那里有很多和jvm进行操作的接口,内存占用啊,类的解析啊等等jvm相关的。QTP应该是自己写了一个这样的接口,然后启动后在去做那些监控啊等操作,然后在就可以识别出java的界面的像按钮那些控件了。应该他已经可以完全控制jvm了。


==================================
在qtp的路径可以找到他的实现是这个文件。
C:\Program Files\HP\QuickTest Professional\bin\java_shared\bin\jvmhook.dll


同样,类似的,网页的插件他也是在IE浏览器里面加载
C:\Windows\system32\BHOMnager.dll
这个加载项的,然后里面可以对IE进行控制那些,用的BHO的技术。


其实这个东西还挺有意的,可以用来监控JVM和,可以让所有的java程序启动的时候就自动加载我们agent到同一个进程环境一块跑起来。

  评论这张
 
阅读(797)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017