51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2886|回复: 7
打印 上一主题 下一主题

[原创] 【求助】QTP实现FTP下载,求高手帮帮我

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-10-19 16:12:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cswalkman 于 2010-10-19 16:16 编辑

为了要用QTP完成FTP的自动下载。我从网上找到以下的代码。没有错误,但是运行却没有结果,没有下载目标文件。
单步调试时最后运行的是这句Reporter.ReportEvent micFail,"FTP:FtpGetFile function","Failed to open download file."

然后在网上找资料仔细了解其中各个函数参数的定义。但是却没有任何解决思路。

其中hConnection我用msgbox能获得一个长整数,msgbox bRetval得到是零。
请教各位高手帮帮我,指出是哪里有错误需要修改。感激不尽!!!


Const DEFAULT_FTP_PORT =21
Const SERVICE_FTP = 1
Const OPEN_TYPE_DIRECT = 1
Const FTP_TRANSFER_TYPE_ASCII = 1

Extern.Declare micLong,"InternetOpen","wininet.dll","InternetOpenA",micString,micDWord,micString,micString,micDWord
Extern.Declare micLong,"InternetConnect","wininet.dll","InternetConnectA",micLong,micString,micInteger,micString,micString,micDWord,micDWord,micDWord
Extern.Declare micInteger,"FtpGetFile","wininet.dll","FtpGetFileA",micLong,micString,micString,micInteger,micDWord,micDWord,micDWord
Extern.Declare micInteger,"FtpPutFile","wininet.dll","FtpPutFileA",micLong,micString,micString,micDWord
Extern.Declare micInteger,"InternetCloseHandle","wininet.dll","InternetCloseHandle",micLong

'  --------------------打开
hInternet = Extern.InternetOpen("QTP_FTP",OPEN_TYPE_DIRECT ,vbNullChar,vbNullChar,0)
If hInternet=0 Then Print("QTP_FTP:Failed to setup FTP environment.")
' ------------------连接
hConnection = Extern.InternetConnect(hInternet,"10.243.233.2",DEFAULT_FTP_PORT,"yonghuming","mima",1,0,0)
If hConnection =0 Then Print("Failed to setup FTP environment")
' -------------------上传
' bRetval = Extern.FtpPutFile(hConnection,sLocalFile,sRemoteFile,0)

' ----------------下载
bRetval = Extern.FtpGetFile(hConnection,"/home/qytanbingjian/tan.ctl","D:\Personal\Desktop\tan.ctl",0,0,1,0)
If Not CBool(bRetVal) Then
       Reporter.ReportEvent micFail,"FTP:FtpGetFile function","Failed to open download file."
else
       Print("FTP:File QTP crack.rar downloaded successfully")
       'Reporter.ReportEvent micPass,"FTP:FtpPutFile function","FTP:File"&sLocalFile&"upload successfully."
End If
' --------------关闭
Extern.InternetCloseHandle(hConnection)
Extern.InternetCloseHandle(hInternet)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-10-19 17:23:51 | 只看该作者
有没有哪位朋友指教一下啊。。。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-10-19 18:55:50 | 只看该作者
请确保FTP服务器/home/qytanbingjian/tan.ctl路径中的文件能访问并下载
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-10-20 09:06:31 | 只看该作者
回复 3# TIB

在ftp下载器中路劲/home/qytanbingjian/tan.ctl是能够下载这个文件的
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2010-10-21 09:13:07 | 只看该作者
估计是这个路径参数的原因。
ftp下载器中路径为/home/qytanbingjian/tan.ctl
ie中打开的路径为 ftp://10.253.222.2/tan.ctl
这个FTP的路径参数该用什么路径呢。。。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-10-29 17:34:50 | 只看该作者
SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2015-10-19 13:26
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    7#
    发表于 2010-10-29 20:14:44 | 只看该作者
    本帖最后由 kavensyw 于 2010-10-29 20:59 编辑

    回复 5# cswalkman

    估计是路径问题,你FTP根目录下应该没有"/home这个文件夹吧?
    是不是"/home/qytanbingjian/tan.ctl"前面"/"要去掉?
    或者"/qytanbingjian/tan.ctl"
    可以把文件放到根目录看看,放在根目录下是这样形式:
    blnRC = FtpGetFile(lngINetConn, “dirmap.txt”,”c:\dirmap.txt”, 0, 0, 1, 0)

    其实你可以先手动用命令行ftp指令来先看看能不能下载
    然后在脚本中用 是shell指令发送ftp指令来下载

    其它网站拷贝过来的一段代码示例,先把FTP指令保存到G:\babar\aaaa.cmd,用WshShell.Run运行:
    '***************************************************************************
    '****Ftp's whatever single file that has been dragged to the script icon****
    '****This id for BA OUT ****************************************************
    '***************************************************************************

        user = "username"
        pass = "pass"
        ip = "ftpserverIP"
        Set fs = CreateObject("Scripting.FileSystemObject") 'file withthe commands for ftp
        Set objArgs = WScript.Arguments
        if objArgs.Count <> 1 then
            msgbox "Only Single file send. Try again."
        else
            strPath = wscript.ScriptFullName
            name = objArgs(0)
            Set a = fs.CreateTextFile("G:\babar\leifftp.com", True)
            a.WriteLine (user)
            a.WriteLine (pass)
            'a.WriteLine ("bin")
            'a.writeline ("CD 'MAILBOX.PASSAPPL.TD.TDX10CD1'")
            a.WriteLine ("send " & name & " 'MAILBOX.PASSAPPL.TD.TDX10CD1'")
            a.WriteLine ("quit")
            a.Close
        end if
        Set fs = CreateObject("Scripting.FileSystemObject")    'file to run ftp with the commands above
        Set a = fs.CreateTextFile("G:\babar\aaaa.cmd", True)
        a.WriteLine ("ftp -i -s:G:\babar\leifftp.com " & ip)
        a.Close
        WshShell.Run "G:\babar\aaaa.cmd",0,true


    另外可以试试这个FTP
    http://www.example-code.com/vbscript/ftp.asp
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2010-11-1 09:34:36 | 只看该作者
    ok,谢谢了,我调试下看看
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-24 00:08 , Processed in 0.092822 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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