我们要区分出上传按钮的种类,大体上可以分为两种:

第一种普通上传:将本地文件路径作为一个值,放在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>

python+selenium上传文件——input标签的更多相关文章

  1. python+selenium:解决上传文件<input type='file'>标签属性被css的visibility隐藏导致无法定位元素的问题

    要想上传文件,需要找到在HTML中<input type="file" />这个标签,有它就可以利用send_keys上传文件,不过这里的<input>元素 ...

  2. Java+Selenium 上传文件,点击选择“浏览文件”按钮,报错invalid argument

    Java+Selenium 上传文件,点击选择"浏览文件"按钮,报错invalid argument 解决代码: Actions action=new Actions(driver ...

  3. Python + Selenium 上传元素为button类型的文件的解决办法

    工具:winspy Python所需安装模块:pywin32 (安装语句:pip install -i https://pypi.douban.com/simple pywin32) 元素位置: 对应 ...

  4. selenium 上传文件方法补充——SendKeys、win32gui

    之前和大家说了input标签的上传文件的方式: <selenium2 python 自动化测试实战>(13)——上传文件 现在好多网站上传的标签并不是input,而是div之类的比如: 全 ...

  5. Selenium 上传文件失败,解决办法一

    昨个改程序遇到一个问题,UI上面有需要上传文件的地方.但是我不知道怎么让Selenium完成 点击上传文件按钮->在弹出的文件选择窗口中选择路径和文件,点确定. 要知道弹出窗口属于window的 ...

  6. Selenium上传文件

    selenium自带了对应的API可以上传问题,如果这个上传文件的html code中显示的type是file那么你就可以使用下面的代码上传文件. /** * click the upload but ...

  7. python requests上传文件 tornado 接收文件

    requests 上传文件 import requests def images(): url = 'http://127.0.0.1:8889/upload/image' files = {'fil ...

  8. Selenium上传文件方法总结

    Web上本地上传图片,弹出的框Selenium是无法识别的,也就是说,selenium本身没有直接的方法去实现上传本地文件,这里总结了两种上传文件的方式. 一.利用Robot类处理文件上传. 其大致流 ...

  9. selenium 上传文件。

    上传文件 driver.findElement(By.xpath("//input[@type='file']"))).sendKeys("C:\\testContent ...

随机推荐

  1. 【ZOJ3627】Treasure Hunt II

    题目大意:给定一个长度为 N 的序列,现有两个人从 P 点出发,每个单位时间每个人最多可以移动一个单位,两人之间的最大距离不能超过 M,一共有 T 单位的时间,求在合法情况下,两人可以获得的序列点权和 ...

  2. /etc/sysconfig/network-scripts/ifcfg-ens33

    因为最近重新搭建CDH集群: DEVICE     接口名(设备,网卡) USERCTL    [yes|no](非root用户是否可以控制该设备) BOOTPROTO  IP的配置方法[none|s ...

  3. jvm——NIO

    https://blog.csdn.net/Evankaka/article/details/48464013 https://www.cnblogs.com/aspirant/p/9166944.h ...

  4. 【leetcode】1185. Day of the Week

    题目如下: Given a date, return the corresponding day of the week for that date. The input is given as th ...

  5. Python 运算符Ⅴ

    Python位运算符 按位运算符是把数字看作二进制来进行计算的.Python中的按位运算法则如下: 下表中变量 a 为 60,b 为 13,二进制格式如下: 运算符 描述 实例 & 按位与运算 ...

  6. Redis :Linux和Window查看版本号

    一.Linux版本:查看服务端版本 **二者都可以** redis-server -v redis-server --version 查看客户端版本 **二者都可以** redis-cli -v re ...

  7. shell练习--PAT题目1005:继续(3n+1)猜想(全绿失败喜加一)

    卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对 n=3 进行验证的时 ...

  8. 指定文件或文件夹直接提交到svn指定目录

    我这里先说两种方法第一种:1.先将那个目录checkout下来2.将要添加的文件或者文件夹放到这个目录中3.右击文件执行svn菜单中的add命令4.右击文件执行svn菜单中的commit命令第二种:如 ...

  9. nbu还原集群数据库异常问题

    集群数据库软件均已安装完毕,现在想从NBU上还原数据库,但在还原控制文件报错 [oracle@oracle-db1 ~]$ rman target / Recovery Manager: Releas ...

  10. 【Python】学习笔记十三:函数的参数对应

    位置传递 我们在定义函数时候已经对函数进行了参数传递调用,但是那只是粗浅的位置传递 示例 def sum(a,b,c): d = a+b+c return d print(sum(1,2,3)) 调用 ...