Java selenium上傳文件的實現(xiàn)
下載和安裝AutoIt
文件上傳是自動化中棘手的部分,目前selenium并沒有提供上傳的實現(xiàn)api,所以知道借助外力來完成,如AutoIt、sikuli。
AutoIt , 這是一個使用類似BASIC腳本語言的免費軟件,它設計用于Windows GUI(圖形用戶界面)的自動化操作,利用模擬鍵盤按鍵,鼠標移動和窗口/控件的組合來實現(xiàn)自動化任務;
1.打開AutoIt的官網(wǎng)下載
AutoIt下載鏈接:https://www.autoitscript.com/site/autoit/downloads/ 或者點擊下列圖標進行下載!
兩種下載方法都可以,這里我想下載的是zip,解壓出來如下圖所示:
點擊SciTe文件夾,我們打開腳本編輯器。
打開百度圖片上傳窗口,打開AutoIt Windows Info 工具,鼠標移動到Finder Tool,按住鼠標左鍵拖動到需要識別的windows控件上。拖動元素定位器上那個靶點形狀按鈕到文件上傳彈窗,能夠捕獲到一些元素信息。用鼠標拖住工具上的Finder Tool的圖標(即圖中藍色圈圈部分)到要識別的控件上,控件的唯一標識信息會顯示在工具的左側部分(圖中紅框標出的部分)。從顯示的結果得知,此控件的Title=“打開”,Class為Edit,Instance=1。我們就是利用控件的這些信息,定位控件,編寫腳本。
打開編輯器,根據(jù)控件Finder Tool識別到的信息來調用函數(shù)編寫腳本;在AutoIt腳本編輯器里輸入如下腳本,不要下面我寫的備注哈。
我們這里需要知道有以下信息:
1.操作頁面的title,用于固定操作的頁面。
2.需要填入的信息,在輸入框中填入“上傳文件的路徑及文件名”(windows操作)
3.點擊“打開”按鈕,實現(xiàn)文件上傳。
根據(jù)以上所識別的控件信息,利用編輯器SciTE Script Editor,根據(jù)AutoIT的語法編寫腳本。
實現(xiàn)文件上傳需要的幾個方法:
ControlFocus ( "窗口標題", "窗口文本", 控件ID) ---->設置輸入焦點到指定窗口的某個控件上(即:控件ID“文件名”輸入框的id) WinWait ( "窗口標題" [, "窗口文本" [, 超時時間]] ) ---->暫停腳本的執(zhí)行直至指定窗口存在(出現(xiàn))為止 ControlSetText ( "窗口標題", "窗口文本", 控件ID, "新文本" ) ---->修改指定控件的文本(即:控件ID“文件名”輸入框的id) Sleep ( 延遲 ) ---->使腳本暫停指定時間段 ControlClick ( "窗口標題", "窗口文本", 控件ID [, 按鈕] [, 點擊次數(shù)]] ) ---->向指定控件發(fā)送鼠標點擊命令(即:控件ID“打開”按鈕的id)
其中,title即AutoIt Window Info識別出的Title字段,controlID即AutoIt Window Info識別出的Class和Instance的拼接,如上圖拼接后的結果應為:Button1(即classnameNN)
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,執(zhí)行腳本驗證(前提是windows窗口必須是打開狀態(tài)),驗證成功,如下圖所示:
為了這個腳本能被java 程序調用,需要通過Compile Script to .exe (x64)工具生成exe文件(這個是通過.exe安裝包安裝的AutoIt)
AutoIt腳本編輯器中點擊Tools菜單,選擇compile,會在同路徑下生成一個.exe的文件(這個是通過解壓包安裝的AutoIt)
提示Conversion complete轉化完成:將ChromeFileUpload.exe拷貝到項目下,待會在Selenium腳本要使用。
java代碼
//實現(xiàn)文件上傳。通過Runtime的靜態(tài)方法獲取Runtime對象 Runtime runtime = Runtime.getRuntime(); //通過Runtime對象調用exe方法 runtime.exec("C:\Users\DELL\Desktop\test\upload\ChromeFileUpload.exe");
到此這篇關于Java selenium上傳文件的實現(xiàn)的文章就介紹到這了,更多相關Java selenium上傳文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot整合Mybatis與druid實現(xiàn)流程詳解
這篇文章主要介紹了springboot整合mybatis plus與druid詳情,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的下伙伴可以參考一下2022-10-10Java中JDom解析XML_動力節(jié)點Java學院整理
JDOM是一種解析XML的Java工具包。DOM適合于當今流行的各種語言,包括Java,JavaScripte,VB,VBScript,Perl,C,C++等。下面通過本文給大家介紹Java中JDom解析XML的方法,感興趣的朋友一起學習吧2017-07-07IDEA安裝lombok插件設置Enable Annotation Processing后編譯依然報錯解決方法
這篇文章主要介紹了IDEA安裝lombok插件設置Enable Annotation Processing后編譯依然報錯解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04通過AOP攔截Spring?Boot日志并將其存入數(shù)據(jù)庫功能實現(xiàn)
本文介紹了如何使用Spring Boot和AOP技術實現(xiàn)攔截系統(tǒng)日志并保存到數(shù)據(jù)庫中的功能,包括配置數(shù)據(jù)庫連接、定義日志實體類、定義日志攔截器、使用AOP攔截日志并保存到數(shù)據(jù)庫中等步驟,感興趣的朋友一起看看吧2023-08-08