上传文件
普通上传:普通的附件上传是将本地文件的路径作为一个值放在input标签中,通过form表单将这个值提交给服务器
插件上传:一般是指基于flash、JavaScript或ajax等技术所实现的上传功能
send_keys实现上传
通过浏览器打开upfile.html文件
普通上传功能
from selenium import webdriver
import os
driver = webdriver.Firefox()
file_path = 'file:///' + os.path.abspath('upfile.html')
driver.get(file_path)
driver.find_element_by_name("file").send_keys('D:\\upload_file.txt') #定位上传按钮,添加本地文件
driver.quit()
文件下载
webdriver允许我们设置默认的文件下载路径,也就是说,文件会自动下载并且存取到设置的目录中。下面以Firefox浏览器为例,执行文件的下载
from selenium import webdriver
import os
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.download.folderList",2)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.download.dir",os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/octet-stream") #下载文件的类型
driver = webdriver.Firefox(firefox_profile=fp)
driver.get("http://pypi.Python.org/pypi/selenium")
driver.find_element_by_partial_link_text("selenium-2").click()
#为了让Firefox浏览器能实现下载文件,我们需要通过FirefoxProfile()对其做一些设置
#browser.download.folderList 设置为0代表下载到浏览器默认下载路径,设置为2则可以保存到指定目录
#browser.download.manager.showWhenStarting 是否显示开始:True为显示,False为不显示
#browser.download.dir 用于指定所下载文件的目录。os.getcwd()函数不需要传递参数,用于返回当前的目录
#browser.helperApps.neverAsk.saveToDisk 指定要下载页面的Content-type值,"application/octet-stream"为文件的类型
#HTTP Content-type 常用对照表:http://tool.oschina.net/commons
#这些参数的设置可以通过在Firefox浏览器地址栏输入:about:config进行设置,
#将所有设置信息在调用WebDriver的Firefox()方法时作为参数传递给浏览器。Firefox浏览器在下载时就根据这些设置信息将文件下载
#到目录下
#上面例子中的设置只针对Firefox浏览器,不同的浏览器设置方法会有所不同。通用的方法还是借助Autolt来操作Windows控件进行下载