51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 10834|回复: 17
打印 上一主题 下一主题

[原创] 用QTP怎样调用Javascript?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-3-31 11:10:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在遇到了这样的一个问题,需要用QTP来测一个部分用JAVA写的网页,但是里面有很多的控件,QTP都不能很好的识别,所以我的解决办法是希望能通过QTP调用已写好的Javascript来处理网页上不能识别的控件。我没有则方面的经验,查找了资料都没有找到答案。大家如果哪位有这方面的经验,希望不吝赐教~~

在线等~~~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-3-31 14:34:21 | 只看该作者
QTP和JScript是没有啥交集的。。。
Java插件可以帮助识别Java控件,LZ可以尝试下
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-3-31 15:05:36 | 只看该作者
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我就不清楚了,我也是刚刚接触这个不长时间的,有没有人有这方面的项目经验的,请指教一下。。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-3-31 15:17:25 | 只看该作者
QTP是不直接支持JScript的。。。你可以考虑下其它的途径吧~~
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-3-31 15:34:51 | 只看该作者
原帖由 hsjzfling 于 2008-3-31 15:17 发表
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开始,文档里就有了这么句话,但是很少有人用到其他的语言去写脚本。
但我觉得,就算是不能用其他的语言写,也应该可以通过某种方法去调用这些语言写成的脚本的,不知道有没有哪位朋友这么用过??
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-3-31 16:14:19 | 只看该作者
这个帖子怎么和
http://www.sqaforums.com/showfla ... p;page=0#Post471161
这个如此相似?
楼主是这个帖子的楼主?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2008-3-31 16:29:09 | 只看该作者
.....呵呵,就是我,我也是实在没有办法了,只能两边寻求答案了
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-3-31 17:48:47 | 只看该作者
难怪。。。我也刚在sqaforums中看到这个帖。。。

QTP是可以通过一些方法来调用其它语言写的函数、方法,比如Extern.Declare或者DotNetFactory.CreateInstance等等
QTP也提供了Library,专门用来存放各种外部文件,不过目前我只知道可以调用其它的语言写成的DLL

所以我之前说不直接支持也就是这个意思,不是完全不行,而是不能将其它语言的代码直接写在Action中来执行~~
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2008-4-1 09:12:34 | 只看该作者
谢谢 hsjzfling的经验分享,还有别人有则方面的经验么??
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2009-10-28 09:00:53 | 只看该作者
其实你完全可以直接用ExecuteFile来调用JS:
ExecuteFile FileName
where FileName is the absolute or relative path of your VBScript file.
或者用Windows Script Host里面的Exec命令。
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2009-10-28 18:15:49 | 只看该作者
ExecuteFile好象不行啊。。。
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("cscript c:\js.js")
这样算是可以,但是不是用QTP的脚本引擎来执行啊,只能算是旁门了。
期待更好解决方案。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-2-22 21:38:16 | 只看该作者
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>
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2011-3-17 20:18:33 | 只看该作者
如果是别的浏览器呢?比如Chrome。
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2011-3-29 15:51:16 | 只看该作者
haha ................
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2011-3-29 17:37:26 | 只看该作者
12# 已经给出了在IE上运行JavaScript的方法,即所有浏览器仅仅IE支持window.execScript, WATIN中封装成方法browser.execScript

13# 提到了一个很好的问题,其它浏览器怎办?JavaScript中的函数eval能够解决。感觉这点不会也是很多只会QTP而不懂前端JavaScript的悲哀。
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2011-3-29 21:52:31 | 只看该作者
你用selenium好了,何必非要用qtp
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2011-3-30 09:47:44 | 只看该作者
本帖最后由 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接口,当然其实现也是浏览器原生事件。这个变化还是很有趣的。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2011-3-30 09:49:51 | 只看该作者
可见有一个能集成很多测试工具的平台是多么的重要,大家都去用STAF什么的好了
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-8 11:51 , Processed in 0.082473 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表