首页 > 代码库 > Selenium+java上传文件

Selenium+java上传文件

自动化调用:

  • AutoIT脚本编译成可执行文件后,放在本地的某一个目录下
  • 上传文件时,首先定位到【上传】字样文本,点击该按钮
  • 执行编辑后的可执行文件,实现文件上传

一、安装AutoIT3,主要用到的工具

  AutoIt Windows Info   用于帮助我们识Windows控件信息。

  Compile Script to.exe 用于将AutoIt生成 exe 执行文件。

  Run Script            用于执行AutoIt脚本。

  SciTE Script Editor   用于编写AutoIt脚本。

  1)、用AutoIt Windows Info  识别Windows控件信息,如按钮

  技术分享

2、用SciTE Script Editor编写脚本,脚本内容如下:

  ;first make sure the number of arguments passed into the scripts is more than 1
  If $CmdLine[0]<2 Then Exit EndIf ;if parmas num <2 ,then break
  ;$CmdLine[0] ;参数的数量
  ;$CmdLine[1] ;第一个参数 (脚本名称后面)
  ;$CmdLine[2] ;第二个参数
  ;都是从cmd传入参数
  handleUpload($CmdLine[1],$CmdLine[2])

  ;定义上传函数,有两个参数,第一个是浏览器名字,第二参数是文件路径
   Func handleUpload($browser, $uploadfile)
       Dim $title                          ;定义一个title变量
              ;根据弹窗的title来判断是什么浏览器
              If $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

  说明:title是AutoIt Window Info识别出的Title字段,controlID是AutoIt Window Info识别出的Class和Instance的拼接

  运行脚本,Toos-->Go,运行时,上传窗口处于打开状态。

  3)、用Complie Script to .exe工具,将脚本编译成可执行文件,即编译成.exe格式

  技术分享

二、执行AutoIT编写的.exe文件

  /*
     * 上传文件
     * 普通上传:普通的附件上传是将本地文件的路径作为i一个值放在input标签中,通过form表单将这个值提交给服务器
     */
    //定义上传函数,第一个参数browser是浏览器的名字,第二个参数filePath是文件路径
    public void handleUpload(String browser,String filePath) {
        //定义了autoit.ext文件的路径
        String executeFile=System.getProperty("user.dir")+"\\test_exe\\autoit.exe";
        String cmd = "\""+ executeFile+ "\""+ " "+ "\""+ browser+ "\""+ " "+ "\""+ filePath+ "\"";
        System.out.println(cmd);
        try{
            Process process= Runtime.getRuntime().exec(cmd);
            process.waitFor();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

  /**
     * 导入文件
     * */
    public void  ExcelImport(String filePath){
        browse_m.click(); //@FindBy(name="get_file")  public WebElement browse_m;//点击浏览按钮
        handleUpload(DriverManager.browserType,filePath);  
    }

  使用的时候直接调用就可以

 

 

  

 

 

Selenium+java上传文件