51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 11231|回复: 44
打印 上一主题 下一主题

[原创] 用ExecuteFile调用外部的VBS文件产生的奇怪问题 - Unicode原因

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-4-13 09:57:29 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
首先在外部定义一个test.vbs文件如下:

Public Function x(byval a, byRef s)          'by default, s is passed "byRef"   
   s= s *10 + a * 10
End function'

在Action 1中写入下列的脚本,但执行的时候QTP会报出Invalid Character错误

ExecuteFile "c:\test.vbs"
svar = 10
svara = 20

Call x(svar, svara)
Msgbox(svara)

如果把外部的test Function直接写在Action中不用executefile调用的话,QTP可以顺利的执行,所以Function本身应该是没有写错的。
但是当使用ExecuteFile来进行调用的时候就会出错。
不知道ExecuteFile在使用的时候是不是有什么限制?想问问大家都是怎么使用的

[ 本帖最后由 hekinwu 于 2007-4-17 10:04 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-7-13 14:04
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]测试排长

    45#
    发表于 2010-4-20 11:29:29 | 只看该作者

    回复 1# 的帖子

    肯定是你资源池,或F7,库出问题了。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    44#
    发表于 2010-4-12 09:46:58 | 只看该作者
    用记事本打开VBS,使用ANSI格式保存一下就好了.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    43#
    发表于 2009-12-20 22:28:27 | 只看该作者
    我晕,这个问题折腾了我1个多小时,原来是编码格式的问题,谢谢楼主以及各位热心的朋友。终于搞定了。谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    42#
    发表于 2009-5-9 15:04:45 | 只看该作者
    我也遇到这个问题:提示无效字符

    qtp:
    VbsFileName = "c:\CaseFunction.vbs"
    ExecuteFile VbsFileName
    a = 1
    b = 3
    call add(a,b,c)
    msgbox c


    c:\CaseFunction.vbs:
    Public Function add(byval a, byval b, beRef c)
       c=a+b
    End Function
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    41#
    发表于 2008-6-13 17:28:53 | 只看该作者
    网页没有加载出来,看完了知道了,谢谢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40#
    发表于 2008-6-13 17:22:31 | 只看该作者
    我机子上也出现该问题,请问你是怎么处理的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    39#
    发表于 2007-10-22 17:36:33 | 只看该作者
    O!明白了,多谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    38#
    发表于 2007-10-22 16:42:24 | 只看该作者
    UltraEdit的保存默认编码就是ANSI了,当然也可以将默认改为Unicode,下图中的第一个打勾的选项就是,去掉那个勾就默认是ANSI了~

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37#
    发表于 2007-10-22 16:42:14 | 只看该作者
    UltraEdit的保存默认编码就是ANSI了,当然也可以将默认改为Unicode,下图中的第一个打勾的选项就是,去掉那个勾就默认是ANSI了~

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    36#
    发表于 2007-10-22 15:53:34 | 只看该作者
    嗯,在PrimalScript的文件 => 属性里就有脚本编码的设置,可以改为ansi的。UltraEdit还没找到在哪设置
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35#
    发表于 2007-10-22 14:50:33 | 只看该作者

    回复 34# 的帖子

    其实应该是只要不用QTP的Function Library来编辑、保存脚本就没啥问题,因为这样保存下来的VBS文件是Unicode编码。这也是QTP的一个BUG。。。参见http://bbs.51testing.com/viewthread.php?tid=89039&page=1
    而使用PrimalScript或UltraEdit工具编写的vbs是没啥问题的,至少我这里保存的脚本都是ANSI的~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34#
    发表于 2007-10-22 11:08:41 | 只看该作者
    只有用notepad这一种办法吗?
    因为vbs主要在PrimalScript或UltraEdit里编辑,总不能每编辑一次就用notepade重新保存一下吧?可不可以在编辑器里设置啊?

    试了一下,在前面加一句On error resume next就可以照常跳过并能读取vbs里的内容了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    33#
    发表于 2007-7-2 14:20:21 | 只看该作者

    多谢楼主

    我也遇到同样的问题,用Notepad编辑之后问题就解决了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32#
    发表于 2007-4-25 16:46:37 | 只看该作者
    呵呵,谢谢了,刚好遇到这个问题,按上面的方法解决了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    31#
    发表于 2007-4-17 12:07:14 | 只看该作者
    原帖由 hekinwu 于 2007-4-17 10:04 发表
    我把可以执行和不可执行的文件一起分析了一下,发现原来执行出现错误的文件是以Unicode编码被保存下来的,而正常执行的文件一定要是ANSI编码的。因为记事本工具默认的编码就是ANSI所以不会出现类似的问题,倒是 ...


    原来原因是这样? 向楼主学习一下,呵呵
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    30#
     楼主| 发表于 2007-4-17 10:04:23 | 只看该作者
    我把可以执行和不可执行的文件一起分析了一下,发现原来执行出现错误的文件是以Unicode编码被保存下来的,而正常执行的文件一定要是ANSI编码的。因为记事本工具默认的编码就是ANSI所以不会出现类似的问题,倒是QTP自己的Save As很奇怪,保存下来的Function Library文件竟然是Unicode编码的。不知道QTP有没有地方可以设置保存文件的编码类型呢?
    总之,executefile调用的文件不能是Unicode编码的,一定要是ANSI的。希望大家保存脚本的时候也注意下,今后发生类似的问题可以轻松解决。谢谢大家的热心帮忙。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    29#
     楼主| 发表于 2007-4-16 16:00:32 | 只看该作者
    谢谢大家的帮忙sdlkfj2
    终于我也出现了正常的画面

    总结:
    因为我之前使用UltraEdit和QTP的Function Library生成VBS文件,
    这个文件使用下来发现是无法被ExecuteFile执行的,即使之后用NotePad进行修改保存也无效的。

    解决方法: 使用右键新建一个文本文件(NotePad),把代码全部Copy进去,Save之后把名字改成Test.vbs
    这个时候在用QTP执行ExecuteFile就一点问题都没有了

    因为一直以来写Code我还是比较习惯在UltraEdit上面编写,没有想到竟然无法执行,对VBScript还是不太熟悉呀。sdlkfj1
    谢谢大家的帮忙,虽然不知道问题究竟是什么原因,但是已经可以绕过去了sdlkfj3

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    28#
    发表于 2007-4-16 15:43:10 | 只看该作者
    请看附件

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    27#
    发表于 2007-4-16 15:40:59 | 只看该作者

    回复 #23 hekinwu 的帖子

    我刚也弄好啦
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-8 22:42 , Processed in 0.088780 second(s), 29 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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