selenium上传文件与下载文件

上传文件

WebDriver无法操作Windows控件,所以,一般通过以下两种方式实现文件上传:

  • 普通上传:把本地文件路径作为一个值放在input标签中,通过form表单将这个值提交给服务器。 input标签可以直接通过send_keys(文件地址)上传文件。
  • 插件上传:一般是指基于Flash、JavaScript或Ajax等技术实现的上传功能。工具:AutoIt。

举例:如果能找到上传的input标签,那么基本可以通过send_keys()方法输入一个本地文件路径实现上传

import os
from selenium import  webdriver
file_path = os.path.abspath('./files/')
#这里测试的页面(upfile.html)和上传的文件(test.txt)位于与当前程序同目录的files/目录下
driver = webdriver.Chrome()
upload_page = 'file:///' + file_path + 'upfile.html'
driver.get(upload_page)
#定位上传按钮,添加本地文件
driver.find_element_by_id("file").send_keys(file_path + 'test.txt')

下载文件

webdriver允许我们设置默认的文件下载路径。

firefox浏览器下载文件:

webdriver.FirefoxProfile():为了能在FireFox浏览器中实现文件的下载,我们需要通过FirefoxProfile()对其做一些设置。selenium启动firefox,如果不指定profile文件,将只能使用firefox默认配置,无法进行浏览器定制,比如不显示图片,启动广告插件等,你必须得自己配置profile,让selenium用指定配置启动。

browser.download.folderList:0:下载到浏览器默认的下载路径,2:下载到指定目录

browser.download.dir:指定下载路径

browser.download.manager.showWhenStarting:在开始下载时是否显示下载管理器

browser.helperApps.neverAsk.saveToDisk:指定要下载的类型,binary/octet-stream二进制类型

import os
from selenium import webdriver
fp = webdriver.FirefoxProfile()
fp.set_preference("browser.downloadList", 2)  # 下载到指定目录
# os.getcwd()获取当前文件的所在位置,即下载文件保存的目录
fp.set_preference("browser.download.dir", os.getcwd())
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "binary/octet-stream")
driver = webdriver.Firefox(firefox_profile=fp)
driver.get("https://pypi.org/project/selenium/#files")
driver.find_element_by_partial_link_text("selenium-3.141.0.tar.gz").click()

Chrome浏览器下载文件:

import os
from selenium import webdriver
options = webdriver.ChromeOptions()
# 0禁止弹出下载窗口
# download.default_directory设置下载路径
prefs = {
    "profile.default_content_settings.popups": 0,
    "download.default_directory": os.getcwd()}
options.add_experimental_option("prefs",prefs)

driver = webdriver.Chrome(chrome_options=options)
driver.get("https://pypi.org/project/selenium/#files")
driver.find_element_by_partial_link_text("selenium-3.141.0.tar.gz").click()

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值