微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

selenium之上传文件和下载文件

上传文件
普通上传:普通的附件上传是将本地文件的路径作为一个值放在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控件进行下载

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐