对于web页面的上传功能实现一般由以下两种方式
- 普通上传:普通上传的附件上传是将本地文件的路径作为一个值放在input标签中,通过form表单将这个值提交给服务器
- 插件上传:一般是基于Flash、JavaScript或Ajax等技术所实现的上上传功能
send_keys实现上传文件
- upfile.html
<html>
<head>
<meta http-equiv="content-type" content="text/html;class=utf-8"/>
<title>upload_file</title>
<link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"/>
</head>
<body>
<div class = "row-fluid">
<div class = "span well">
<h3>upload_file</h3>
<input type="file" name="file"/>
</div>
</div>
</body>
<script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></script>
</html>
通过这种方式上传,就避免了操作windows控件的步骤,如果能找到上传的input标签,那么基本就可以通过send_keys方法向骑输入一个文件地址实现上传
代码如下:
from selenium import webdriver
import os
driver = webdriver.Firefox()
file = 'file:///'+os.path.abspath('upfile.html')
upfile = os.path.abspath('upload_file.txt')
driver.get(file)
driver.find_element_by_name('file').send_keys(upfile)