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