`
libin0019
  • 浏览: 237483 次
  • 性别: 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

 

分享到:
评论

相关推荐

    Chrome_autoit操作chrome_autoit3chrome_autoit_autoitchrome_chrome_源

    在标题和描述中提到的"Chrome_autoit操作chrome_autoit3chrome_autoit_autoitchrome_chrome_源",主要涉及到使用AutoIt来控制Google Chrome浏览器。 首先,让我们深入了解一下AutoIt。AutoIt是一个免费的工具,它...

    selenium&autoIt实现图片上传的自动化

    首先,我们使用Selenium录制一个文件上传操作,然后使用AutoIt获取Windows控件信息,并编写AutoIt脚本来实现文件上传操作。最后,我们将AutoIt脚本转换为可执行文件,并在Selenium脚本中调用该可执行文件来实现文件...

    autoit3非标准控件通过相对坐标定位点击

    总的来说,AutoIt中的`MouseClick`函数和相关的辅助函数提供了强大的鼠标操作能力,能够处理各种复杂的界面交互,尤其是在面对非标准控件时,通过精确的坐标定位和合理的辅助设置,可以实现稳定且精确的点击操作。...

    python+selenium+autoit实现文件上传功能

    在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下 解决方案 第一种:type=file的上传文件,类似如下的 使用类似这样的代码就可以完成: driver.find_element('name','file').send_...

    autoit3操作chrom谷歌浏览器

    在本资源中,重点是使用AutoIt来操作Google Chrome浏览器,这是通过利用WebDriver接口实现的。WebDriver是一种跨平台的自动化测试框架,允许程序员控制Web浏览器的行为,进行自动化测试。 `ChromeDriver`是谷歌浏览...

    python+autoit操作windows浏览器窗口

    python+autoit操作windows窗口,可以嵌入自动化selenium使用,可以对多浏览器炫酷操作,你值得拥有;

    autoit关于excel的操作

    8. **数据库操作**:`mssql.au3`和`数据库.au3`可能涉及到使用AutoIt连接和操作数据库,可能包括读取数据库数据到Excel,或将Excel数据导入数据库。`MYsql.au3`表明还支持MySQL数据库的处理。 9. **源码与文档**:`...

    python+selenium+autoit实现文件上传功能.pdf

    然而,对于某些特定的文件上传设计,如使用JavaScript或者自定义控件实现的上传,Selenium的`send_keys`方法可能无法直接生效。此时,就需要引入AutoIt来辅助完成文件选择。以下是一个使用AutoIt实现文件上传的步骤...

    autoit-excel操作

    在本主题“AutoIt-excel操作”中,我们将深入探讨如何使用AutoIt来操作Microsoft Excel,进行数据处理和自动化任务。 1. **AutoIt安装与环境配置** 在开始使用AutoIt进行Excel操作前,首先需要下载并安装AutoIt的...

    利用Autoit实现选择视频自动化上传

    利用Autoit实现选择视频自动化上传,弹出窗口控件,定位到控件上,选择文件,保存。多用于selenium自动化代码中本地上传视频部分。

    AutoIT操作MySQL数据库lib包及源码

    AutoIT是一种流行的自动化工具,主要用于Windows操作系统的脚本编写,...通过学习和使用这些源代码,开发者可以深入理解如何在AutoIT中集成数据库功能,并且可以以此为基础,扩展出更适合自己需求的数据库操作脚本。

    autoit+upload+download

    AutoIt可以模拟键盘和鼠标操作,处理窗口、控件,以及进行文件操作,因此在处理上传和下载任务时非常方便。 2. **文件上传** 在AutoIt中,文件上传通常涉及与网页表单交互或通过FTP协议上传。例如,使用`...

    Autoit电子书籍教程

    - GUI控件:学习如何使用AutoIt内置的控件,如按钮、文本框、列表框等,创建交互式用户界面。 - GUI布局与美化:理解控件的定位和尺寸调整,以及使用样式和颜色改变界面外观。 4. **AutoIt窗口和控件操作** - ...

    Python selenium使用autoIT上传附件过程详解

    首先,我们需要使用AutoIt的辅助工具`AutoIt Windows Info`来获取目标控件的相关属性。这个工具可以帮助我们查看窗口、控件的Title、Class、Instance以及ClassnameNN等信息。例如,在文件上传的对话框中,窗口的...

    autoit快速开发指南

    介绍了如何使用autoit快速操作模态窗口、控件等

    autoit数据库操作实例.pdf

    本文档主要介绍了使用AutoIt语言对数据库进行操作的实例,包括创建数据库、创建表、创建字段、插入数据、删除数据和查询数据等基本操作。 《CreateDB》函数 _CreateDB函数用于创建一个新的数据库,函数参数为...

    scite4autoit3 AutoIT

    AutoIT V3,scite4AutoIT3,只有这个版本的AutoIT才可以添加版本信息、版权信息、还有程序图标等,只AutoIT3,即可加了以下代码,也是没有办法编译带有exe版本,版权,公司等信息的,这个版本还有一些额外的工具,获取...

    Autoit 3 C++开发API

    AutoItX 是AutoIt的ActiveX组件,它为其他编程语言(如C++)提供了接口,使得开发者可以将AutoIt的功能集成到他们的项目中。这个压缩包可能包含了以下关键文件: 1. 头文件(.h):头文件通常包含函数声明和常量...

    autoit安裝軟件

    AutoIt是一种轻量级、高效的自动化脚本语言,主要用于Windows操作系统环境下的任务自动化。它以其简单易学的语法和强大的功能,在IT行业中受到许多用户的喜爱,尤其适合进行批量操作、系统管理以及软件安装等任务。 ...

    autoit 使用方法

    AutoIt 是一款强大的自动化脚本语言,主要用于Windows操作系统上的任务自动化。它允许用户编写简单的到复杂的脚本来模拟鼠标和键盘操作、控制窗口、处理系统任务等。以下是对AutoIt使用方法的详细介绍: **1. 安装...

Global site tag (gtag.js) - Google Analytics