一、工具版本及设定:
QTP10 + FireFox3.0.8
在qtp10的帮助文档中明明很清晰地说明了对FireFox3.0.x的支持,但是开始的时候qtp就是识别不了firefox中的对象,经过多方调查,终于发现需要在FireFox中安装add-on。具体做法如下:
1.找到AgentPluginInFireFox30文件夹
我这个qtp10在安装目录的 HP\QuickTest Professional\bin\Mozilla\AgentPluginInFireFox30
2.将该文件夹拷贝一份到FireFox的Add-on下面
FireFox的安装目录下的extensions就是FireFox的Add-on目录
3.修改拷贝到extensions下的AgentPluginInFireFox30文件夹的文件夹名
在AgentPluginInFireFox30文件夹里面有一个install.rdf文件,该文件中的大概前面几行有一个<em:id>标签,该标签中的值就作为AgentPluginInFireFox30文件夹的文件夹名
4.重新打开FireFox,并确认是否qtp的Add-on安装成功了
menu -- 工具 -- add-on中如果出现了QuickTest Professional 10.0 Plugin字样,就说明安装成功了
5.Object Spy一下你就会发现终于qtp把对象就认识成web的了。啊~世界是如此美好~~~
附上网上查到的资料:
http://knowledgeinbox.com/articles/qtp/issues/firefox-is-not-recognized-as-browser-after-upgrade/
http://www.geekinterview.com/talk/14144-qtp-and-firefox.html
二、QTP在能成功识别出FF中网页的对象后,很快你又会发现很郁闷的问题,比如说,当你Object Spy的时候,你会发现在RO的标签中会有这么一句话「実行環境オブジェクトのプロパティは、XXオブジェクトではサポートされていません。」,这个问题直接导致你将不能通过DOM的方式对对象进行操作,比如说我想通过 Browser().Page().object.documentElement.InnerHtml 来取得页面的html,但是直接到.object就挂了。
不过如果需要取得页面的html的话,不通过DOM对象也能取得,看一段脚本吧。
set sh = createobject("Wscript.Shell")
wait(1)
sh.SendKeys "^u"
wait(1)
html = Browser().page().WebElement().GetRoProperty("innerText")
wait(1)
HtmlCheckPoint(html,strName) ⇒ 这个方法可以参考http://hi.baidu.com/qiyongping/blog/item/7917dca7427e8c8cd14358fe.html
set sh = nothing
幸好,还是能够得到source窗口的对象,然后可以通过GetRoProperty("innerText")方法来取得html的
三、QTP10帮助文档中明确说名支持3.0.x,但是如果有安装了相应的qtp patch的话,QTP10还能支持FireFox3.5和FireFox3.6
或许这种patch可以到HP官网上找到。
http://h30499.www3.hp.com/t5/Functional-and-Business-Process/ct-p/sws-FBPV
四、QTP只能识别在FireFox窗口中显示web页面的对象,对FireFox的其他部分比如地址栏,菜单栏等等都不能识别,不过,似乎IE也是这样的。
五、手机网站的测试中,会用到FireMobileSimulator,这是一个FireFox的add-on,在FMS的官网上,只能下载到最新的版本。而最新的版本可能比较适用于FireFox比较新的版本,比如FireFox4。但是很不幸运的是QTP10对FireFox4不支持。如果你在用FirFox3.0.8测试的话,那么我可以告诉你FireMobileSimulator1.1.11与之是契合的。
可以取得FireFox以前版本的网站:
http://www.oldapps.com/firefox.php?old_firefox=56