我們要區(qū)分出上傳按鈕的種類,大體上可以分為兩種:
第一種普通上傳:將本地文件路徑作為一個值,放在input標簽中,通過form表單將這個值提交給服務器;
第二種插件上傳:是通過Flash、JavaScript、Ajax等實現(xiàn)(標簽非input)的上傳功能;
---------------------------------------------------------------------------------------------------
對于通過input標簽實現(xiàn)的上傳功能,可以將其看做一個輸入框,通過send_keys()指定本地文件路徑的方式,
實現(xiàn)文件上傳
from selenium import webdriver import time driver = webdriver.Firefox() driver.implicitly_wait(20) driver.get('http://sahitest.com/demo/php/fileUpload.htm') driver.find_element_by_id('file').send_keys('C:\\Users\\del\\Desktop\\文本.txt') time.sleep(10) driver.quit()
---------------------------------------------------------------------------------------------------------
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.implicitly_wait(20)
driver.get('file:///C:/Users/del/Desktop/tanchuang.html')
time.sleep(10)
driver.find_element_by_id('file').send_keys('C:\\Users\\del\\Desktop\\文本.txt')
time.sleep(10)
driver.quit()
===================================================================================
file:///C:/Users/del/Desktop/tanchuang.html的源代碼
<html> <body> <form name='form1' action='fileUpload.php' method='post' enctype='multipart/form-data'> <label for='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> <form name='form3' action='fileUpload.php?q=a$&*+^' method='post' enctype='multipart/form-data'> <label for='file'>File:</label> <input type='file' name='file' id='file5' /> <br /> <input type='hidden' name='multi' value='false'/> <input type='submit' name='submit' value='Submit Single' /> </form> <form action='fileUpload.php' method='post' enctype='multipart/form-data'> <label for='file2'>File[]:</label> <input type='file' name='file[]' id='file2' /> <br /> <label for='file3'>File[]:</label> <input type='file' name='file[]' id='file3' /> <br /> <input type='hidden' name='multi' value='true'/> <input type='submit' name='submit' value='Submit Array' /> </form> <script> function setAction(){ document.form2.action = 'fileUpload.php'; } </script> <form name='form2' action='' method='post' enctype='multipart/form-data' onsubmit='setAction()'> <label for='file'>File:</label> <input type='file' name='file' id='file4' /> <br /> <input type='hidden' name='multi' value='false'/> <input type='submit' name='submit' value='Submit Single' /> </form> <form action='fileUpload.php' method='post' enctype='multipart/form-data'> <label for='files'>Files:</label> <input type='file' name='file[]' id='files' multiple/> <br /> <input type='hidden' name='multi' value='true'/> <input type='submit' name='submit' value='Submit Multiple' /> </form> <div id='fileDetails'> <label for='file5'>Files:</label> <input type='file' name='file' id='fileWdValidation' multiple/> </div> <!--<div id='filesDetails'> <label for='file2'>Files:</label> <input type='file' name='file' id='files1' multiple/> </div> --> <script> function fillFileDetails(){ var files = this._file; var fileDetails = '<br />'; for(var i=0; i<files.length; i++){ fileDetails += '<span class='fileName'>File Name:'+ files[i].name +'</span> <br />'; fileDetails += '<span class='fileSize'>File Size:'+ files[i].size +'</span> <br />'; fileDetails += '<span class='fileType'>File Type:'+ files[i].type +'</span> <br />'; } document.getElementById('fileDetails').insertAdjacentHTML('beforeend', fileDetails); } document.getElementById('fileWdValidation').onchange = fillFileDetails; //document.document.getElementById('files1').onchange = fillFileDetails; </script> </body> </html>