python selenium上傳文件——input標簽
我們要區分出上傳按鈕的種類,大躰上可以分爲兩種:
第一種普通上傳:將本地文件路逕作爲一個值,放在input標簽中,通過form表單將這個值提交給服務器;
第二種插件上傳:是通過Flash、JavaScript、Ajax等實現(標簽非input)的上傳功能;
---------------------------------------------------------------------------------------------------
對於通過input標簽實現的上傳功能,可以將其看做一個輸入框,通過send_keys()指定本地文件路逕的方式,
實現文件上傳
fromseleniumimportwebdriver importtime driver=webdriver.Firefox() driver.implicitly_wait(20) driver.get('/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><formname='form1'action='fileUpload.php'method='post'enctype='multipart/form-data'><labelfor='file'>File:</label><inputtype='file'name='file'id='file'/><br/><inputtype='hidden'name='multi'value='false'/><inputtype='submit'name='submit'value='Submit Single'/></form><formname='form3'action='fileUpload.php?q=a$&* ^'method='post'enctype='multipart/form-data'><labelfor='file'>File:</label><inputtype='file'name='file'id='file5'/><br/><inputtype='hidden'name='multi'value='false'/><inputtype='submit'name='submit'value='Submit Single'/></form><formaction='fileUpload.php'method='post'enctype='multipart/form-data'><labelfor='file2'>File[]:</label><inputtype='file'name='file[]'id='file2'/><br/><labelfor='file3'>File[]:</label><inputtype='file'name='file[]'id='file3'/><br/><inputtype='hidden'name='multi'value='true'/><inputtype='submit'name='submit'value='Submit Array'/></form><script>function setAction(){ document.form2.action ='fileUpload.php'; } </script><formname='form2'action=''method='post'enctype='multipart/form-data'onsubmit='setAction()'><labelfor='file'>File:</label><inputtype='file'name='file'id='file4'/><br/><inputtype='hidden'name='multi'value='false'/><inputtype='submit'name='submit'value='Submit Single'/></form><formaction='fileUpload.php'method='post'enctype='multipart/form-data'><labelfor='files'>Files:</label><inputtype='file'name='file[]'id='files'multiple/><br/><inputtype='hidden'name='multi'value='true'/><inputtype='submit'name='submit'value='Submit Multiple'/></form><divid='fileDetails'><labelfor='file5'>Files:</label><inputtype='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>functionfillFileDetails(){ varfiles=this._file; varfileDetails='<br />'; for(vari=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>
0條評論