51Testing软件测试论坛

标题: 【求助】QTP实现FTP下载,求高手帮帮我 [打印本页]

作者: cswalkman    时间: 2010-10-19 16:12
标题: 【求助】QTP实现FTP下载,求高手帮帮我
本帖最后由 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)
作者: cswalkman    时间: 2010-10-19 17:23
有没有哪位朋友指教一下啊。。。
作者: TIB    时间: 2010-10-19 18:55
请确保FTP服务器/home/qytanbingjian/tan.ctl路径中的文件能访问并下载
作者: cswalkman    时间: 2010-10-20 09:06
回复 3# TIB

在ftp下载器中路劲/home/qytanbingjian/tan.ctl是能够下载这个文件的
作者: cswalkman    时间: 2010-10-21 09:13
估计是这个路径参数的原因。
ftp下载器中路径为/home/qytanbingjian/tan.ctl
ie中打开的路径为 ftp://10.253.222.2/tan.ctl
这个FTP的路径参数该用什么路径呢。。。
作者: cswalkman    时间: 2010-10-29 17:34
SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS,SOS
作者: kavensyw    时间: 2010-10-29 20:14
本帖最后由 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
作者: cswalkman    时间: 2010-11-1 09:34
ok,谢谢了,我调试下看看




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2