Selenium對于上傳文件這個操作有很多種辦法
一種是最簡單的sendkeys,參數加上文件路徑就可以了
不過sendkeys貌似僅僅能應對input標簽,所以當開發運用別的方法開發控件,那我們就需要用其他方法了
二種是模擬keyboard操作,一步步滴操作,不過這種我沒有試過不做評價
三種使用插件直接對系統窗口做操作
這里推薦一種叫AutoIt的工具
附上官網:https://www.autoitscript.com/site/
通過官網可以直接下載
下載完畢后,在開始里顯示有這么些個工具,各自都有用途,下面一一介紹
根據自己的操作系統選擇相對應的版本
1.首先是Window Info這個東西
它就是有點像瀏覽器里的F12定位元素
點擊拖拽至目標窗口可以看到會把窗口的元素寫進Window Info里
比如拖拽到文件上傳窗口上
可以看到,Title叫做文件上傳,還有class,instance都是等會需要用到的
簡單的介紹完畢,至于其他的功能有興趣的朋友們可以自己研究下
2.獲取好元素信息后,就是編碼了,打開SciTE Script Editor
內置的語言有點類似VBS 可以F1查看幫助文檔
介紹一些常用的語句:
ControlFocus:將焦點設置在什么控件上
參數依次是Window的title,control的text和controlid
那我們可以把輸入框的屬性抓一下得到后,點到Control tab下查看該控件的屬性,可以看到Text屬性為空,ID為1148
例如:ControlFocus("文件上傳","",1148)
WinWait:等待幾秒,在此期間如果找到窗口和控件則進行下一步,如果沒有找到,跑完等待時間進行下一步
參數依次是Window的title,control的text,等待的時間(秒)
例如:WinWait("文件上傳","",5)
ControlSetText:對某控件輸入內容
參數依次是Window的title,控件的text,控件id,和輸入內容
例如: ControlSetText("文件上傳","",1148,"fwweffwe")
ControlClick:控件點擊
參數依次是Window的title,控件的text,控件id
例如:ControlClick("文件上傳", "",1);
Sleep(500):線程等待500ms。
這些操作組合起來就可以完成上傳文件了
; Wait 10 seconds for the Upload window to appear
WinWait("文件上傳","",5)
;ControlFocus("title","text",controlID)
ControlFocus("文件上傳","",1148)
; Set the File name text on the Edit field
ControlSetText("文件上傳", "", 1148, @ScriptDir & "\1.png")
Sleep(500)
; Click on the Open button
ControlClick("文件上傳", "",1);
點擊F5可以執行代碼
@ScriptDir是腳本的目錄
3.需要把你的腳本讓selenium調用到,怎么做呢
需要用到Complie Script to .exe
首先將你剛才的腳本保存到某個文件,保存下來的格式為au3為后綴的文件
然后需要用如下圖,將其轉換為exe文件供selenium調用
這個操作就不說了吧,一目了然吧不懂的可以留言!
最后在selenium中需要先點出窗口,然后執行exe文件可以操作完成
其實還是比較簡單的,它的腳本不難!