WebDriver并沒有提供對應的方法上鞠,可通過以下兩種思路解決:·如果上傳按鈕是input標簽,只要定位上傳按鈕世曾,可優(yōu)先嘗試調用send_keys()方法輸入文件路徑谴咸;·如果需要打開系統(tǒng)窗口岭佳,即Window窗口添加本地文件,則可嘗試借助AutoIt實現(xiàn)珊随。
1.send_keys()方式上傳
設計uploadfile.html頁面叶洞,代碼如下:
<html>
<body>
<div>
? ? <form name="form1" action="fileUpload.PHP" method="post" enctype="multipart/form-data">
? ? ? ? <label type="file">File:</label>
? ? ? ? <input type="file" name="file" id="file"/>
? ? ? ? <br/>
? ? ? ? <input type="hidden" name="multi" value="false"/>
? ? ? ? <input type="submit" name="submit" value="Submit Single"/>
? ? </form>
</div>
</body>
</html>
存放有一個名為Image.jpeg的圖片,如果要在uploadfile.html頁面上傳該圖片螟炫,則實現(xiàn)代碼如下:
from seleniumimport webdriver
import time
driver = webdriver.Chrome()
driver.get("file:///D:/uploadfile.html")
time.sleep(5)
driver.find_element_by_xpath("http://*[@id='file']").send_keys("d:\\Image.jpeg")
time.sleep(2)
driver.quit()
2.AutoIt方式上傳
關于非input標簽的文件上傳不恭,可借助AutoIt财饥。AutoIt目前的版本是v3.3.14.*。AutoIt是一個使用類似BASIC腳本語言的免費軟件沾瓦,用于在Windows GUI(圖形用戶界面)中進行自動化操作谦炒。它利用模擬鍵盤按鍵宁改、鼠標移動和窗口/控件的組合來實現(xiàn)自動化任務。
首先需要下載AutoIt还蹲,可進入https://www.autoitscript.com/site/autoit/downloads頁面谜喊,在該頁面中找到下載區(qū)域并單擊下載按鈕即可。
AutoIt主要應用的功能有下面3個。
·Auto It Windows Info:元素定位器诵次,用于幫助標識Windows控件信息;
·SciTE Script Editor:編輯器剔猿,用于編寫AutoIt腳本归敬;
·Compile Script to.exe用于將AutoIt生成exe執(zhí)行文件鄙早。
根據(jù)AutoIt Windows Info所識別到的控件信息打開SciTEScript Editor,當AutoIt的腳本編寫好后,將其保存為D:\ AutoitScript.au3下舱污。
打開Compile Script to.exe工具弥虐,將前面保存的AutoitScript.au3腳本文件生成為exe可執(zhí)行文件D:\AutoitScript.exe
編寫自動化腳本媚赖,調用D:\ AutoitScript.exe實現(xiàn)AutoIt.html文件上傳惧磺,代碼如下: