当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
分享到:
相关推荐
使用selenium&autoIt实现图片上传的自动化
在做web端ui层自动化的时候会碰到文件上传的操作,经常有朋友问到,这里总结一下 解决方案 第一种:type=file的上传文件,类似如下的 使用类似这样的代码就可以完成: driver.find_element('name','file').send_...
• MouseClick缺点之一:受电脑屏幕大小和分辨率的影响,可使用WinMove固定窗口位置和大增加稳定性。 • MouseClick缺点之二:用户鼠标和键盘的移动和程序互相影响,可使用BlockInput()禁止用户输入。 MouseClick...
autoit控制chrome的扩展库,正式拜托麻烦的IE
python+autoit操作windows窗口,可以嵌入自动化selenium使用,可以对多浏览器炫酷操作,你值得拥有;
利用Autoit实现选择视频自动化上传,弹出窗口控件,定位到控件上,选择文件,保存。多用于selenium自动化代码中本地上传视频部分。
autoit关于excel的操作
提供的资源中包含所有函数的操作文档和示例,其他浏览器理论上可以支持(需要对应的驱动程序,驱动可从官网下载,例如谷歌的:chromedriver.exe),但是当前版本暂未测试过其他浏览器。
介绍了如何使用autoit快速操作模态窗口、控件等
主要是AutoIT脚本对MySQL数据库的操作实例,作为AutoIT的操作来说比较方便;希望能给需要的人提供一些帮助。
python+selenium+autoit实现文件上传功能
AutoIT V3,scite4AutoIT3,只有这个版本的AutoIT才可以添加版本信息、版权信息、还有程序图标等,只AutoIT3,即可加了以下代码,也是没有办法编译带有exe版本,版权,公司等信息的,这个版本还有一些额外的工具,获取...
autoit 使用方法 autoit 使用方法 autoit 使用方法
Autoit生成的上传文件exe执行文件
autoit数据库操作实例.pdf
使用autoit自动登录Discuz论坛发帖。个人经过试验成功的,不过autoit不支持win7系统,要在XP下才好使。
利用模拟键盘按键, 鼠标移动和窗口/控件的操作实现自动化任务. 而这是其它语言不可能做到或无可靠方法实现的(比如 VBScript 和 SendKeys). AutoIt 非常小巧, 完全运行在所有 windows 操作系统上. 并且不需要任何...
控件操作等来实现自动化任务,而这是其它语言所无法做到或 尚无可靠方法实现的(比如VBScript和SendKeys)。 AutoIt 最初是为PC(个人电脑)的“批量处理”而设计,用于 对数千台PC进行(同样的)配置,不过随着v3...
autoit3常用的函数,方便查找,需要的可以下在
AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于WindowsGUI(图形用户界面)中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。从网站上下载AutoIt并...