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)   

 

腳本示例如下:

If $CmdLine[0]<2 Then Exit EndIf
 handleUpload($CmdLine[1],$CmdLine[2])

Func handleUpload($browser,$uploadfile)
  Dim $title
    If $browser="ie" Then
      $title="選擇要加載的文件"
    ElseIf $browser="chrome" Then
      $title="打開"
    ElseIf $browser="firefox" Then
      $title="文件上傳"
    EndIf

    If WinWait($title,"",6) Then
      WinActivate($title)
      ;ControlFocus(("title","text",controllD)用於識別windows文件上傳窗口
      ControlFocus($title,"","")
      ControlSetText($title,"","Edit1",$uploadfile)
      ControlClick($title,"","Button1")
    Else
      Return False
    EndIf
EndFunc

(5)   之后打開AutoIT3下的Compile Script To .exe,將生成的.au3文件變異為.exe的可執行文件。

(6)lang包下的Runtime類實現cmd命令的效果,來使用我們生成的文件。

//上傳附件 -定義上傳函數,第一個參數browser是瀏覽器的名字,第二個參數filePath是文件路徑-推薦使用
public static void upload(String browser,String filePath) {
  //定義了autoit.ext文件的路徑
  System.out.println("====" + filePath);
  String executeFile=System.getProperty("user.dir")+"\\uploadfile\\autoit.exe";
  String cmd = "\""+ executeFile+ "\""+ " "+ "\""+ browser+ "\""+ " "+ "\""+ filePath+ "\"";
  System.out.println("cmd="+cmd);
  try{
    Process process= Runtime.getRuntime().exec(cmd);
    process.waitFor();
  } catch(Exception e) {
    e.printStackTrace();
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM