Selenium+autoit+java 上传文件

【1】selenium: 触发点击事件打开上传控件

【2】autoit:控制windows组件【注意点:.au3文件是源文件,执行文件是exe;若在源文件界面F5运行会报错“拒绝访问”】
(http://img.blog.csdn.net/20160422145924983)
上传文件代码如下:(存放在D:\autoit\upload.exe)

;first make sure the number of arguments passed into the scripts is more than 1
If CmdLine[0]<2ThenExitEndIf;ifparmasnum<2,thenbreak; CmdLine[0] ;参数的数量
; CmdLine[1];(); CmdLine[2] ;第二个参数
;都是从cmd传入参数
handleUpload( CmdLine[1], CmdLine[2])

;定义上传函数,有两个参数,第一个是浏览器名字,第二参数是文件路径
Func handleUpload( browser, uploadfile)
Dim title;title;titleIf browser=”ie” Then ; 代表IE浏览器
title=ElseIf browser=”chrome” Then ; 代表谷歌浏览器
title=ElseIf browser=”firefox” Then ; 代表火狐浏览器
$title=”文件上传”
EndIf

        if WinWait($title,"",4) Then ;等待弹出出现,最大等待时间是4秒
               WinActivate($title)                  ;找到弹出窗口之后,激活当前窗口
               ControlSetText($title,"","Edit1",$uploadfile)   ;把文件路径放入输入框,此”Edit1“是用FinderTool获取到的
               ControlClick($title,"","Button1")                ;点击保存或者打开或者上传按钮,此“Button1”使用FinderTool获取到的
        Else
        Return False
        EndIf

EndFunc

【3】JAVA:调用autoit的exe文件

import java.io.File;

public class base {

static void publicvoidhandleUpload(String browser, String str) {
     File file = new File(str);
    String filePath= file.getAbsolutePath();
    String executeFile= "D:\\autoit\\upload.exe"; //定义了upload.exe文件的路径
    String cmd= "\""+ executeFile+ "\""+ " "+ "\""+ browser+ "\""+ " "+ "\""+ filePath+ "\"";

    try{
        Process p= Runtime.getRuntime().exec(cmd);
        p.waitFor();
    } catch(Exception e) {
        e.printStackTrace();
    }
}

你可能感兴趣的:(selenium)