当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_源",主要涉及到使用AutoIt来控制Google Chrome浏览器。 首先,让我们深入了解一下AutoIt。AutoIt是一个免费的工具,它...
首先,我们使用Selenium录制一个文件上传操作,然后使用AutoIt获取Windows控件信息,并编写AutoIt脚本来实现文件上传操作。最后,我们将AutoIt脚本转换为可执行文件,并在Selenium脚本中调用该可执行文件来实现文件...
总的来说,AutoIt中的`MouseClick`函数和相关的辅助函数提供了强大的鼠标操作能力,能够处理各种复杂的界面交互,尤其是在面对非标准控件时,通过精确的坐标定位和合理的辅助设置,可以实现稳定且精确的点击操作。...
在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下 解决方案 第一种:type=file的上传文件,类似如下的 使用类似这样的代码就可以完成: driver.find_element('name','file').send_...
在本资源中,重点是使用AutoIt来操作Google Chrome浏览器,这是通过利用WebDriver接口实现的。WebDriver是一种跨平台的自动化测试框架,允许程序员控制Web浏览器的行为,进行自动化测试。 `ChromeDriver`是谷歌浏览...
python+autoit操作windows窗口,可以嵌入自动化selenium使用,可以对多浏览器炫酷操作,你值得拥有;
8. **数据库操作**:`mssql.au3`和`数据库.au3`可能涉及到使用AutoIt连接和操作数据库,可能包括读取数据库数据到Excel,或将Excel数据导入数据库。`MYsql.au3`表明还支持MySQL数据库的处理。 9. **源码与文档**:`...
然而,对于某些特定的文件上传设计,如使用JavaScript或者自定义控件实现的上传,Selenium的`send_keys`方法可能无法直接生效。此时,就需要引入AutoIt来辅助完成文件选择。以下是一个使用AutoIt实现文件上传的步骤...
在本主题“AutoIt-excel操作”中,我们将深入探讨如何使用AutoIt来操作Microsoft Excel,进行数据处理和自动化任务。 1. **AutoIt安装与环境配置** 在开始使用AutoIt进行Excel操作前,首先需要下载并安装AutoIt的...
利用Autoit实现选择视频自动化上传,弹出窗口控件,定位到控件上,选择文件,保存。多用于selenium自动化代码中本地上传视频部分。
AutoIT是一种流行的自动化工具,主要用于Windows操作系统的脚本编写,...通过学习和使用这些源代码,开发者可以深入理解如何在AutoIT中集成数据库功能,并且可以以此为基础,扩展出更适合自己需求的数据库操作脚本。
AutoIt可以模拟键盘和鼠标操作,处理窗口、控件,以及进行文件操作,因此在处理上传和下载任务时非常方便。 2. **文件上传** 在AutoIt中,文件上传通常涉及与网页表单交互或通过FTP协议上传。例如,使用`...
- GUI控件:学习如何使用AutoIt内置的控件,如按钮、文本框、列表框等,创建交互式用户界面。 - GUI布局与美化:理解控件的定位和尺寸调整,以及使用样式和颜色改变界面外观。 4. **AutoIt窗口和控件操作** - ...
首先,我们需要使用AutoIt的辅助工具`AutoIt Windows Info`来获取目标控件的相关属性。这个工具可以帮助我们查看窗口、控件的Title、Class、Instance以及ClassnameNN等信息。例如,在文件上传的对话框中,窗口的...
介绍了如何使用autoit快速操作模态窗口、控件等
本文档主要介绍了使用AutoIt语言对数据库进行操作的实例,包括创建数据库、创建表、创建字段、插入数据、删除数据和查询数据等基本操作。 《CreateDB》函数 _CreateDB函数用于创建一个新的数据库,函数参数为...
AutoIT V3,scite4AutoIT3,只有这个版本的AutoIT才可以添加版本信息、版权信息、还有程序图标等,只AutoIT3,即可加了以下代码,也是没有办法编译带有exe版本,版权,公司等信息的,这个版本还有一些额外的工具,获取...
AutoItX 是AutoIt的ActiveX组件,它为其他编程语言(如C++)提供了接口,使得开发者可以将AutoIt的功能集成到他们的项目中。这个压缩包可能包含了以下关键文件: 1. 头文件(.h):头文件通常包含函数声明和常量...
AutoIt是一种轻量级、高效的自动化脚本语言,主要用于Windows操作系统环境下的任务自动化。它以其简单易学的语法和强大的功能,在IT行业中受到许多用户的喜爱,尤其适合进行批量操作、系统管理以及软件安装等任务。 ...
AutoIt 是一款强大的自动化脚本语言,主要用于Windows操作系统上的任务自动化。它允许用户编写简单的到复杂的脚本来模拟鼠标和键盘操作、控制窗口、处理系统任务等。以下是对AutoIt使用方法的详细介绍: **1. 安装...