首頁  >  文章  >  Java  >  Java Selenium如何使用sendkeys上傳文件

Java Selenium如何使用sendkeys上傳文件

PHPz
PHPz轉載
2023-04-20 22:46:131578瀏覽

下載和安裝AutoIt

檔案上傳是自動化中棘手的部分,目前selenium並沒有提供上傳的實作api,所以知道藉助外力來完成,例如AutoIt、sikuli。

AutoIt , 這是一個使用類似BASIC腳本語言的免費軟體,它設計用於Windows GUI(圖形使用者介面)的自動化操作,利用模擬鍵盤按鍵,滑鼠移動和視窗/控制項的組合來實現自動化任務;

1.開啟AutoIt的官網下載

Java Selenium如何使用sendkeys上傳文件

#兩種下載方法都可以,這裡我想下載的是zip,解壓縮出如下圖所示:

Java Selenium如何使用sendkeys上傳文件

點擊SciTe資料夾,我們開啟腳本編輯器。

Java Selenium如何使用sendkeys上傳文件

開啟百度圖片上傳窗口,開啟AutoIt Windows Info 工具,滑鼠移到Finder Tool,按住滑鼠左鍵拖曳到需要辨識的windows控制項上。拖曳元素定位器上那個靶點形狀按鈕到檔案上傳彈窗,能夠捕捉到一些元素資訊。用滑鼠拖曳工具上的Finder Tool的圖示(即圖中藍色圈圈部分)到要辨識的控制項上,控制項的唯一識別資訊會顯示在工具的左側部分(圖中紅框標示的部分)。從顯示的結果得知,此控制項的Title=“開啟”,Class為Edit,Instance=1。我們就是利用控制項的這些信息,定位控件,編寫腳本。

Java Selenium如何使用sendkeys上傳文件

打開編輯器,根據控制項Finder Tool識別到的信息來調用函數編寫腳本;在AutoIt腳本編輯器裡輸入如下腳本,不要下面我寫的備註哈。

我們這裡需要知道有以下資訊:

1.操作頁面的title,用於固定操作的頁面。
2.需要填入的訊息,在輸入框中填入「上傳檔案的路徑及檔案名稱」(windows動作)
3.點選「開啟」按鈕,實作檔案上傳。

根據上述所辨識的控制項訊息,利用編輯器SciTE Script Editor,依照AutoIT的語法編寫腳本。

實作檔案上傳所需的幾個方法:

ControlFocus ( "窗口标题", "窗口文本", 控件ID)
---->设置输入焦点到指定窗口的某个控件上(即:控件ID“文件名”输入框的id)
WinWait ( "窗口标题" [, "窗口文本" [, 超时时间]] )
---->暂停脚本的执行直至指定窗口存在(出现)为止
ControlSetText ( "窗口标题", "窗口文本", 控件ID, "新文本" )
---->修改指定控件的文本(即:控件ID“文件名”输入框的id)
Sleep ( 延迟 )
---->使脚本暂停指定时间段
ControlClick ( "窗口标题", "窗口文本", 控件ID [, 按钮] [, 点击次数]] )
---->向指定控件发送鼠标点击命令(即:控件ID“打开”按钮的id)

其中,title即AutoIt Window Info辨識出的Title字段,controlID即AutoIt Window Info辨識出的Class和Instance的拼接,如上圖拼接後的結果應為:Button1(即classnameNN)

Java Selenium如何使用sendkeys上傳文件

ControlFocus(("title","text",controllD)用于识别windows文件上传窗口
ControlFocus("打开","","")向文件名输入框输入本地要上传文件的路径
ControlSetText("打开","","Edit1","C:\Users\DELL\Desktop\test\upload\北京宏哥.jpeg")
Sleep(2000)点击上传窗口中的“打开“按钮
ControlClick("打开","","Button1")

儲存腳本檔案為ChromFileUpload.au3格式,然後在AutoIt腳本編輯器中點選Tools選單,tools =>go,執行腳本驗證(前提是windows視窗必須是開啟狀態),驗證成功,如下圖所示:
為了這個腳本能被java 程式呼叫,需要透過Compile Script to .exe (x64)工具產生exe檔(這個是透過.exe安裝包安裝的AutoIt)

AutoIt腳本編輯器中點選Tools選單,選擇compile,會在同路徑下產生一個.exe的檔案(這個是透過解壓縮包安裝的AutoIt)

Java Selenium如何使用sendkeys上傳文件

提示Conversion complete轉換完成:將ChromeFileUpload.exe拷貝到專案下,待會在Selenium腳本要使用。
java程式碼

//实现文件上传。通过Runtime的静态方法获取Runtime对象
Runtime runtime = Runtime.getRuntime();
//通过Runtime对象调用exe方法
runtime.exec("C:\Users\DELL\Desktop\test\upload\ChromeFileUpload.exe");

以上是Java Selenium如何使用sendkeys上傳文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除