今天要讲的内容是注册异类子控件授予强制HOOK,名字有点抽象,简单的说就是在一个QTP可识别的A类插件窗口对象中存在着B类插件的控件对象, 最常见的例子就是在应用程序中内嵌一个Browser对象子控件。说穿了就是内嵌一个浏览器,注意这里的大前提是此应用程序是可以被QTP识别的。那么如 果出现我所说的此类情况,那么QTP是绝对不可能去自动识别此应用程序中的浏览器控件对象的,原因很简单,QTP只把这个应用程序看做是一个A类插件的控 件对象,因此他根本不会去识别它。那么本章就来讲一下如何通过注册异类子控件的方法来强制注入启动hook,简单来看一下。

图1

如图1 是我在。net中建立的一个非常简单的浏览器程序,我们可以看到此应用程序一共只有三个控件,一个是地址文本框,一个是“go”按钮用于提交地址栏, 还有一个就是Browser对象控件,此浏览器是内嵌在.net程序中的。

那么现在我们打开QTP,加载.Net 和 Web插件之后,这里我们首先来看一下spy识别.net程序中的Go按钮。

图2

来看一下QTP是否能够识别浏览器为page对象。我们再使用spy对Browser控件进行捕获。

图3

如 图3,我们发现QTP根本无法识别此Browser对象,直接是抛了个WinObject出来,title还是Internet Explorer_Server,还真是不给面子,明明已经查出是IE了,还不给识别。那既然不给面子,那我们也不用客气,怎么办?直接切入QTP的核心 HOOK配置文件,强制注册应用程序。

精彩部分开始,请注意看下去:

1. 进入到QTP的核心目录:  《安装目录》/bin 下找到   mic.ini  (此文件是关键文件)

图4

2. 用记事本打开此INI文件。我们都知道INI格式的都是配置文件,可以直接在里面更改我们需要的配置。

3. 找到[ie_hook]部分段落。

图5

 

4. 在这一栏的最后添加一行应用程序的 文件名+后缀名 = yes后保存。

图6

5. 修改完毕之后,重启QTP,再次重启刚才的应用程序,此时我们再来看一下spy的结果。

图7

如图7,我们可以看到结果很明显,经过我们的努力,QTP当然也相当的给力,成功把Browser对象识别为Page对象。包括对象库也可以任意添加。

图8

好 了,整个例子就这样完毕了,回头我们再来看一下mic.ini,除了ie_hook外,还有很多其他的配置可以改,有兴趣的朋友也可试试探索下。忘了提 了,其实此方法就是QTP的Register New Browser Control的一个执行过程。但是此方法比它好的地方就很明显了,就是我们可以使用脚本的形式来对ini文件进行配置,而不是需要人工介入去另行注册。 对于移植脚本来说是非常有利的。

qtp ie_hook的更多相关文章

  1. QTP基础学习(一)安装目录介绍

    上一篇介绍了QTP 10 安装,安装完成后就可以看到文件的目录了,这里主要介绍以下几个目录及作用. 简单介绍部分目录 1.addins:插件包 2.bin目录:可执行程序,这里存储了很多配置文件.运行 ...

  2. Qtp常见问题

    (1)Qtp不能识别对象 插件加载错误 IE内未加载BHOManager加载项

  3. Selenium VS QTP

      Selenium系列 QTP 适用结构  B/S结构  C/S.B/S结构 适用人员 有一定代码基础(Java.C#.Python.Ruby) 对编程不是很熟悉的.厌烦了做手工功能测试的.想快速进 ...

  4. QTP对象识别tips

    1.已添加的对象无法再次识别成功,编辑对象存储库中测试对象详细信息.子对象无法识别成功时,先检查父对象是否可成功识别. 2.使用.NET Windows Forms 侦测器检测后再使用object s ...

  5. 自动化测试工具QTP的使用实例 分类: 软件测试 2015-06-17 00:23 185人阅读 评论(0) 收藏

    1. QTP简介 1.1QTP功能与特点 QTP是QuickTest Professional的简称,是一种自动化软件测试工具.在软件的测试过程中,QTP主要来用来通过已有的测试脚本执行重复的手动测试 ...

  6. QTP操作txt文档

    QTP可以在txt文件(文本文件中读取数据) 首先创造一个文档对象 set fso = createObject("scripting.filesystemobject") 然后用 ...

  7. QTP处理各类鼠标事件fireEvent

    在做web测试时,页面上的HTML标签会包含各类事件:单击(onclick).双击(onDblClick).光标聚集(OnBlur).onchange.onfocus.onmousedown.onmo ...

  8. QTP操作word文档

    QTP可以对word文档进行操作,这里最主要展示的是向word文档写入内容,并保存的功能. Option explicit Dim wordApp Set wordApp = createobject ...

  9. QTP操作excel文档

    对于QTP操作excel的大前提是,保证组建服务里的DCOM配置里存在 microsoft excel application ,具体的查看方式是,在运行框中输入dcomcnfg,然后会打开组件服务的 ...

随机推荐

  1. Spring AspectJ AOP 完整示例

    http://outofmemory.cn/java/spring/AOP/aop-aspectj-example-before-after-AfterReturning-afterThrowing- ...

  2. spring项目改名后不能启动的原因及解决办法

    今日修改了一个spring项目的项目名称,修改后启动项目Debug as->Debug on server,过了很久也没有出现web首页,仔细看项目的定时器已经启动,eclipse的Consol ...

  3. Bootstrap学习3--栅格系统

    备注:最新Bootstrap手册:http://www.jqhtml.com/bootstraps-syntaxhigh/index.html 目录1.简介2.栅格选项3.列偏移4.嵌套列5.列排序 ...

  4. 第11条:用zip函数同时遍历两个迭代器

    核心知识点: (1)内置的zip函数可以平行地遍历多个迭代器. (2)python3中地zip相当于生成器,会在遍历过程中逐次产生元祖.而python2中地zip则是直接把这些元祖完全生成好,并一次性 ...

  5. 在 CentOS7最小化 下的编译安装:Nginx 1.5.2 + PHP 5.5.7 + MySQL 5.6.10

    1.安装Nginx: 安装包目录 mkdir -p /Data/tgzcd /Data/tgz 安装编译依赖 yum install wget yum install pcre yum install ...

  6. IOS 代码风格习惯 总结1

    从我大三下学期开始工作开始, 几乎都是孤独的开发  因为身边开发ios 不多 ,除了学习开源的代码优秀风格技巧 剩下的 就是自己造, 所以 养成了 好多不好的习惯. 本知道面向对象的好处 ,但是实际开 ...

  7. 用 Java 技术创建 RESTful Web 服务

    JAX-RS:一种更为简单.可移植性更好的替代方式 JAX-RS (JSR-311) 是一种 Java™ API,可使 Java Restful 服务的开发变得迅速而轻松.这个 API 提供了一种基于 ...

  8. path.join()和path.resolve()区别

    一.区别 1.path.join() 方法使用平台特定的分隔符作为定界符将所有给定的 path 片段连接在一起,然后规范化生成的路径. 2.path.resolve() 方法将路径或路径片段的序列解析 ...

  9. 【leetcode刷提笔记】Container With Most Water

    Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai).  ...

  10. 次小生成树 POJ 2728

    #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>us ...