python+selenium上傳文件——input標簽


我們要區分出上傳按鈕的種類,大體上可以分為兩種:


第一種普通上傳:將本地文件路徑作為一個值,放在input標簽中,通過form表單將這個值提交給服務器;

第二種插件上傳:是通過Flash、JavaScript、Ajax等實現(標簽非input)的上傳功能;

---------------------------------------------------------------------------------------------------

對於通過input標簽實現的上傳功能,可以將其看做一個輸入框,通過send_keys()指定本地文件路徑的方式,

實現文件上傳

 

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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM