遇到一个IE升级到IE8之后脚本无法跑的问题。那么对于这样的问题,我们需要如何去处理?

问题描述 项目脚本一开始就是通过QTP内置关键字去关闭所有IE,接着再通过关键字systemutil.Run “C:\Program Files\Internet Explorer\iexplore.exe” 来启动IE。接下来是开始一个Browser().sync的Code,整个脚本就正好到Sync这个方法这里开始出错。

 

问题分析

首先,我们到这一步出错的地方用Debug,再用spy下会发现,Browser已经被识别成糟糕的Window。所以我们可以判断这个情况是因为BHO控件没有加载进IE而导致的。一般导致这个情况的,是先启动IE再启动QTP导致的。但这个问题为什么会在这里出现?

其次,我们使用了其它3种常用方法去启动IE8,

1,

Set IE=createobject(“internetExplorer.application”)

IE.visible=true

2,

systemutil.Run “C:\Program Files\Internet Explorer\iexplore.exe”

3,

set wshshell = createobject(“wscript.shell”)

wshshell.exec “C:\Program Files\Internet Explorer\iexplore.exe”

4,通过Automation-Recored and run setting中的设置URL路径

其中前3种方法在QTP中启动IE都无加载控件。但是,第4种方法却能够成功的把这个IE的对象识别成Browser.

问题解决

1,在脚本中,我们直接使用systemutil.Run “iexplore.exe” 便可成功识别出IE8。

2,在IE7中,无论我们用那一种方式,是否是绝对路径或者是iexplore.exe,都能够成功识别。

3,导致这个问题的发生,有可能是IE8的启动机制会有所特别。所以QTP11会为IE8设置一个专门的启动方案,而这个方案的关键字就是iexplore.exe而不是它的整个路径,因为加入一个完整路径会变成启动某一个程序,QTP便不会做特殊处理,直接启动,而第4个方法应该是更能说明这个点。

 

总结:

1) QTP开启之后,才能开启IE。

2) QTP启动IE之后, BHO控件会加载进IE。

        a) BHO控件 (Browser Helper Object), 它是IE和第三方程序的相互接口,程序员可以通过代码来控制浏览器的行为。当打开QTP后,然后开启IE 浏览器 时, QTP会默认把 BHO一个 dll类注入到 浏览器 来采取识别浏览器里的对象元素。

3)BHO加载成功的状态是 Enabled

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值