`
libin0019
  • 浏览: 234456 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

使用AutoIt操作Dojo上传控件

 
阅读更多

当iframe引用其它页面时,需要一层一层的选择!

 

<iframe>        
    <frameset name='fset'>
        	<frame src = "..."/>
	        <frame src = "...">
	        ...
		        <input type='file'>
	        ...
	        </frame>
    </frameset>
</frame>

  1.  ClickBrowseBtn.au3  功能描述:点击浏览按钮

 

#include <IE.au3>
;获取IE对象
$oIE = _IEAttach ("IE标题")
forEachFrame($oIE)
Func forEachFrame($oIFrame)
	;查找FileInput控件
	$oElements = _IETagNameGetCollection ($oIFrame, "input")
	For $oElement In $oElements
		If $oElement.type == 'file' Then
			;点击浏览Button
			_IEAction($oElement, "click")
            Return true
		EndIf
	Next
	$oFrames = _IEFrameGetCollection ($oIFrame)
	$iNumFrames = @extended
	For $i = 0 to ($iNumFrames - 1)
		$oFrame = _IEFrameGetCollection ($oIFrame, $i)
		forEachFrame($oFrame)
	Next
EndFunc
 

  2. SelectFile.au3  功能描述:设置路径,点击打开按钮

 

#include <IE.au3>
If $CmdLine[0]<1 Then Exit EndIf
handleupload($CmdLine[1]);
;define a function to handle upload
Func handleupload($uploadfile)
	Dim $title="选择要加载的文件"
	if WinWait($title,"",4) Then ;wait for window with title attribute for 4 seconds;
		   WinActivate($title)                  ;active the window;
		   ControlSetText($title,"","Edit1",$uploadfile)   ;put the file path into the textfield  
		   ControlClick($title,"","Button2")                ;click the OK or Save button
	Else
		Return False
	EndIf
EndFunc 
 

  3. DownloadFile.au3  功能描述:点击保存按钮,设置保存路径,关闭完成对话框

 

#include <IE.au3>
#NoTrayIcon;隐藏托盘图标
If $CmdLine[0]<1 Then Exit EndIf
handleDownload($CmdLine[1])
 
Func handleDownload($SaveAsFileName)
	
	Dim $download_title = "文件下载"
	Dim $save_title = "另存为"
	Dim $finished_title = "下载完毕"

	If WinWait($download_title,"",4) Then
		WinActivate($download_title)
		Sleep (1000)
		ControlClick($download_title,"","Button2","")
		WinWaitActive($save_title,"",4)
		ControlSetText($save_title,"","Edit1", $saveAsFileName)
		Sleep (1000)
		if FileExists ($SaveAsFileName) Then
			FileDelete($SaveAsFileName)
		EndIf
		ControlClick($save_title, "","Button2","")
		If WinWait($finished_title,"",4) Then
			ControlClick($finished_title,"","Button4","")	
			Return FileExists($SaveAsFileName)
		EndIf
	EndIf
	Return False
EndFunc
 

 

  4.  FileUpload.java 方法调用

   
   /**
     * <p>Discription:[点击浏览按钮]</p>
     */
    private final String CLICKBROWSE_EXECFILENAME = "clickBrowseBtn.exe"; 

    /**
     * <p>Discription:[选择文件]</p>
     */
    private final String SELECTFILE_EXECFILENAME = "selectFile.exe"; 

   /**
     * <p>Discription:[上传文件]</p>
     * @param filePath
     * @author:[xxxx]
     * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
     */
    public void uploadFile(String filePath)
    {
        //取得当前项目在硬盘上的绝对路径
        String basePath = "\""+System.getProperty("user.dir")+"\\exec\\";
        try {
            //打开文件选择窗口
            Runtime.getRuntime().exec( basePath +  this.CLICKBROWSE_EXECFILENAME + "\"");
            pause(2000);
            //选择文件并点击打开按钮
            Runtime.getRuntime().exec( basePath  + this.SELECTFILE_EXECFILENAME + "\" \""+ filePath + "\"").waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

   5. FileDownload.java 下载文件

 /**
     * <p>Discription:[下载文件]</p>
     * @param filePath 文件路径
     * @param fileName 文件名
     * @author:[xxxx]
     * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
     */
    public void downloadFile(String filePath, String fileName)
    {
        try
        {
            //将文件保存至指定目录
            Runtime.getRuntime().exec( "\""+System.getProperty("user.dir")+"\\exec\\" + this.EXECFILENAME + "\" \""+ filePath+"\\"+fileName + "\"").waitFor();
        }
        catch (InterruptedException e)
        {
            log.error("下载文件失败!文件路径:"+filePath+", 文件名:"+fileName);
        }
        catch (IOException e)
        {
            log.error("下载文件失败!文件路径:"+filePath+", 文件名:"+fileName);
        }
    }
 

参考资料:利用Selenium自动化Web测试

http://www.ibm.com/developerworks/cn/opensource/os-webautoselenium/index.html

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics