使用selenium作自動化時,咱們常常會遇到的一個讓人頭疼的問題就是文件上傳。html
問題的難點在於selenium沒法識別並操做Windows窗口,若咱們能夠繞過彈出框直接把文件信息上傳給選擇按鈕,難點就解決了。spa
如下是常見頁面形式:3d
分析HTML,發現不管是普通前臺仍是Extjs,他們的html有一個共同的特色,具備如下代碼:code
<input ..... type="file" ...../>
ok,只要咱們使用selenium自帶的sendkeys把文件路徑(相對絕對無所謂)傳給該元素,就可繞過選擇窗口直接上傳文件.htm
解決方案誕生了對象
driver.findElement(XXXXX).sendKeys("filePath");
Have a Tryblog
博客園上傳圖片:driver.findElement(By.name("file")).sendKeys("C:\Users\123\Pictures\a.png");圖片
QQ郵箱上傳附件:driver.findElement(By.name("UploadFile")).sendKeys("C:\Users\123\Pictures\a.png");input
定位元素根據狀況而定,不必定用name;文件路徑能夠使相對路徑,你們自行修改就好博客
注意:執行sendKeys的元素必定要符合input和 type="file"條件,不然就是你沒找對上傳文件的對象,會上傳失敗的。
像這樣的,必定注意不要上傳到前面的那個input上,不然會失敗的