51Testing软件测试论坛

标题: 有意思的现象,关于QTP录制打开ie的时机 [打印本页]

作者: rcpp    时间: 2008-9-19 11:12
标题: 有意思的现象,关于QTP录制打开ie的时机
先不开QTP,直接打开ie,输入http://bbs.51testing.com/default.php
打开51论坛了
然后打开QTP,用spy去识别页面,发现除了browser、page和winobject以外,web对象全部无法识别!
如图所示:

不要动QTP和当前的ie,然后新开一个ie,也输入http://bbs.51testing.com/default.php
又打开51论坛了(管理员:为什么要说又?)
然后再用spy去识别页面,会发现web对象都识别出来了,而且原来那个web对象识别不出来的ie里面也可以识别出来了
如图所示:

没有深入探究,猜测可能是QTP启动之后,再打开ie会触发某些模块的加载……而单独打开ie又是不加载的东东……
再次打开ie,打开51论坛(管理员:为什么又不说又?那我为什么说又不说又?到底是重复了该说又,还是不重复说又?[email=!@#$%]!@#$%[/email]……)
输入这篇东西,ok,试验结束
附件:

作者: 假装不在    时间: 2008-9-19 11:53

QTP启动后,当手动打开的IE才会加载控件进去。
如果QTP没开,手动打开的IE是不会加载进去的。
作者: rcpp    时间: 2008-9-19 14:39
标题: 回复 2# 的帖子
是什么控件呢?bhomanager吗?
这个作为加载项是安装了QTP以后IE中就存在的,怎么开IE都会有
不是这个又是哪个呢?
作者: cafard-haibin    时间: 2008-9-19 15:34
我在实际测试中也发现了此问题,刚开始没有找到原因,第2次发现是与QTP和浏览器的启动先后顺序有关。我感觉2楼的回答有道理。但不知道有没有官方的解释。
作者: xiaoshancom    时间: 2008-9-19 23:44
标题: 回复 1# 的帖子
你能重复先打开ie的那个场景吗?重复后去 Windows 任务管理器 里面看看,当前的IE是iexplorer.exe还是explorer.exe:
打开任务管理器->在“应用程序”面板中选中你打开的页面->右键,选择“转到进程”

VBS代码:
  1. Set IE = CreateObject ("InternetExplorer.Application")
复制代码
打开的就是explorer.exe

如果这个不行,就去验证BHOManager Class在IE里是开启的。
作者: rcpp    时间: 2008-9-20 14:18
标题: 回复 5# 的帖子
呵呵,这位仁兄大概没看明白我写的意思
作者: xiaoshancom    时间: 2008-9-20 15:53
标题: 回复 6# 的帖子
你的意思也就是说排除了那个进程是explorer.exe了?也确定那个class是在IE里Enable的?

我回复时候的最后一句话,可能代表了原因:跟BHO有关,QTP是通过BHO来获取浏览器页面元素的。本来获取测试对象在Windows Object和Web Browser之间方式就存在区别,由于QTP是把两者集成到一个工具上了,所以通用的做法应该是得到对象类后对该对象做一次判断:如果是iexplorer就用另一种方式获取页面元素的值;但QTP的Spy采取了另外一种做法,利用BHO直接跟Microsoft Internet Explorer绑定。于是,这也解释了为何QTP Spy工具在支持Microsoft Internet Explorer页面元素的同时却对Firefox的页面元素支持不同步的部分原因。

至于为何Internet Explorer在QTP Spy启动前运行会使得BHO同Spy之间的信息交互出现问题,需要更详细的信息,可惜我手头没环境。你可以试试
1.枚举
  1. HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects下是否有重复项
复制代码
2.重新注册
  1. regsvr32 /u BHOManager.dll
  2. regsvr32 /s BHOManager.dll
复制代码
国外论坛上也有如果无法获取页面元素,在QTP Spy启动后运行IE是一项workaround,据我现在的理解,这可能是QTP Spy自身的一个bug。不知晓你会debug、会写BHO吗? 都不会的话对你来说准确诊断这问题可能有问题。
作者: xiaoshancom    时间: 2009-9-12 23:05
标题: 回复 1# 的帖子
碰巧有空看了下这个问题,下面是答复,希望有帮助:

为何无法录制QTP启动前的浏览器




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2