We want to distinguish the type of upload button, it can be roughly divided into two types:
The first common uploaded: the local file path as a value in the input tag, this value will be submitted to the server by the form the form;
The second plug-in to upload: is achieved (non-label input) by Flash, JavaScript, Ajax, etc. upload function;
---------------------------------------------------------------------------------------------------
For uploading achieved by input tag, it can be seen as one input box, a local file path mode is specified by the send_keys (),
Upload Files
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 source
<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>