selenium+java文件上传

1.Input元素

直接使用sendKeys()方法

driver.findElement(By.id("attachment")).sendKeys("D:\\test.txt"); 

2. 非input元素处理方法,借助AutoIT3工具

下载工具并安装,下载地址:https://www.autoitscript.com/

安装步骤省略。

步骤如下:

(1)首先打开被测系统要上传文件的页面。

(2)之后打开安装的AutoIT3文件夹下的AutoIT3_x64.exe。 

 

(3)鼠标选中AutoIt Window Info窗口内的Finder Tool,长按到靶子浮现之后拖动到本地文档窗口“文件名”输入框内,获取文本框的信息。之后重复此动作,获取上传按钮的信息。

 

(4)获取文本框和上传按钮的元素信息后,打开SciTE Script Editor,将以下代码复制粘贴到文本区域。这段代码的用意是首先判断所传参数是否大于1个,之后调用handleUpload函数,函数是先判断进行文件上传的是什么浏览器,之后,根据上一步所采集到的文本框及上传按钮元素属性,实现文件路径的打开“上传”按钮的点击,也就是上传功能的实现。保存生成后缀为.au3的文件。

(5)       

;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

脚本示例如下:

;ControlFocus(("title","text",controllD)用于识别windows文件上传窗口
ControlFocus("打开","","")
;向文件名输入框输入本地要上传文件的路径
ControlSetText("打开","","Edit1","D:\workspace\VCPlatform\uploadfile\城市夜景.mp4")
Sleep(3000)
;点击上传窗口中的“打开“按钮
ControlClick("打开","","Button1")

(5)   之后打开AutoIT3下的Compile Script To .exe,将生成的.au3文件变异为.exe的可执行文件。

(6)lang包下的Runtime类实现cmd命令的效果,来使用我们生成的文件。

        //上传附件 

  public static void uploadFile(String filePath) {
  try {
    Runtime runtime = Runtime.getRuntime();
    runtime.exec(filePath);
    Thread.sleep(5000);
   } catch (Exception e) {
    System.out.println("Fail to upload");
    e.printStackTrace();
    }
  }

 

猜你喜欢

转载自www.cnblogs.com/xiule/p/12021547.html