用QTP怎样调用Javascript?
我现在遇到了这样的一个问题,需要用QTP来测一个部分用JAVA写的网页,但是里面有很多的控件,QTP都不能很好的识别,所以我的解决办法是希望能通过QTP调用已写好的Javascript来处理网页上不能识别的控件。我没有则方面的经验,查找了资料都没有找到答案。大家如果哪位有这方面的经验,希望不吝赐教~~在线等~~~ QTP和JScript是没有啥交集的。。。
Java插件可以帮助识别Java控件,LZ可以尝试下 java add-in我已经 加过了,但是某些控件是比较特殊的,即便是加了add-in也是识别不出来,而且,据我所知,js的调用应该和加不加add-in是没什么关系的,不同于识别java的,应该是可以直接调用。就像silktest,有它自己的method去调用js,例如:
sReturn = HtmlObject.ExecLine (sJavaScript[, bAsync])
sReturn = HtmlObject.ExecMethod (sMethod )
sReturn = ExecScript(lsJavaScript[, bAsync])
但是QTP我就不清楚了,我也是刚刚接触这个不长时间的,有没有人有这方面的项目经验的,请指教一下。。 QTP是不直接支持JScript的。。。你可以考虑下其它的途径吧~~ 原帖由 hsjzfling 于 2008-3-31 15:17 发表 http://bbs.51testing.com/images/common/back.gif
QTP是不直接支持JScript的。。。你可以考虑下其它的途径吧~~
应该不会的,出自QTP的help文档:
You can write your QuickTest automation scripts in any language and development environment that supports automation. For example, you can use: VBScript, JavaScript, Visual Basic, Visual C++, or Visual Studio.NET.
Some development environments support referencing a type library. A type library is a binary file containing the description of the objects, interfaces, and other definitions of an object model.
好像是从8.2开始,文档里就有了这么句话,但是很少有人用到其他的语言去写脚本。
但我觉得,就算是不能用其他的语言写,也应该可以通过某种方法去调用这些语言写成的脚本的,不知道有没有哪位朋友这么用过?? 这个帖子怎么和
http://www.sqaforums.com/showflat.php?Cat=0&Number=471161&an=0&page=0#Post471161
这个如此相似?
楼主是这个帖子的楼主? .....呵呵,就是我,我也是实在没有办法了,只能两边寻求答案了 难怪。。。我也刚在sqaforums中看到这个帖。。。
QTP是可以通过一些方法来调用其它语言写的函数、方法,比如Extern.Declare或者DotNetFactory.CreateInstance等等
QTP也提供了Library,专门用来存放各种外部文件,不过目前我只知道可以调用其它的语言写成的DLL
所以我之前说不直接支持也就是这个意思,不是完全不行,而是不能将其它语言的代码直接写在Action中来执行~~ 谢谢 hsjzfling的经验分享,还有别人有则方面的经验么?? 其实你完全可以直接用ExecuteFile来调用JS:
ExecuteFile FileName
where FileName is the absolute or relative path of your VBScript file.
或者用Windows Script Host里面的Exec命令。 ExecuteFile好象不行啊。。。
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("cscript c:\js.js")
这样算是可以,但是不是用QTP的脚本引擎来执行啊,只能算是旁门了。
期待更好解决方案。 Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = True
oIE.Navigate "http://localhost:8080/index.html"
While oIE.Busy:Wend
Set oDoc = oIE.Document
oDoc.parentWindow.execScript "openwin()"
'oDoc.parentWindow.execScript "alert("test")"
可以使用document.parentWindow.execScript 后接js函数名或者js语句。
其中openwin()是index.html中的js函数
<script LANGUAGE="JavaScript" TYPE="text/javascript">
function openwin()
{
alert("test");
}
</script> 如果是别的浏览器呢?比如Chrome。 haha ................ 12# 已经给出了在IE上运行JavaScript的方法,即所有浏览器仅仅IE支持window.execScript, WATIN中封装成方法browser.execScript
13# 提到了一个很好的问题,其它浏览器怎办?JavaScript中的函数eval能够解决。感觉这点不会也是很多只会QTP而不懂前端JavaScript的悲哀。 你用selenium好了,何必非要用qtp 本帖最后由 shanxi 于 2011-3-30 09:49 编辑
回复 16# lyscser
window.navigate(IE only)/window.location.href,createElement,设置innerhtml,这些东西对于有JavaScript经验的人并不陌生,虽然QTP并没有显示封装这些方法,但我们可以通过QTP访问该元素的Dom对象完成想要的任何执行JavaScript操作!
Selenium从1.0到2.0整个核心都变化了,对这种趋势不清楚是好还是坏。Selenium 1.0从以JavaScript为核心转变为最新2.0以封装浏览器Native Method为核心,后者必须为各个平台提供原生的浏览器驱动,如Firefox必须兼顾*nix和windows两种平台,幸好其引擎Gecko本身的Com就是跨平台的;但如果再看IME驱动就必须分平台实现。为了能够运行JavaScript,Selenium 2.0提供了JavascriptExecutor接口,当然其实现也是浏览器原生事件。这个变化还是很有趣的。 可见有一个能集成很多测试工具的平台是多么的重要,大家都去用STAF什么的好了
页:
[1]