Python selenium —— 文件下载,不弹出窗口,直接下载到指定路径

本文介绍如何使用Selenium配置Firefox和Chrome浏览器实现自动化文件下载,包括设置下载路径及禁止弹窗提示等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天谈谈文件下载吧,很多人不会处理弹出的文件下载框,其实跟上传类似,可以用autoit和win32api解决,方法类似,可以看博主之前的文章 Python selenium —— 文件上传所有方法整理总结 ,今天这里博主主要想讲讲更漂亮的一种处理办法,那就是指定下载路径,不弹出弹框,直接下载到指定路径。

今天主要分享Firefox和Chrome的设置方法。

Firefox 文件下载

对于Firefox,需要我们设置其Profile:

  • browser.download.dir:指定下载路径
  • browser.download.folderList:设置成 2 表示使用自定义下载路径;设置成 0 表示下载到桌面;设置成 1 表示下载到默认路径
  • browser.download.manager.showWhenStarting:在开始下载时是否显示下载管理器
  • browser.helperApps.neverAsk.saveToDisk:对所给出文件类型不再弹出框进行询问

下面来个示例:

# -*- coding: utf-8 -*-

from selenium import webdriver
from time import sleep

profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.dir', 'd:\\')
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/zip')

driver = webdriver.Firefox(firefox_profile=profile)

driver.get('http://sahitest.com/demo/saveAs.htm')
driver.find_element_by_xpath('//a[text()="testsaveas.zip"]').click()
sleep(3)
driver.quit()

Firefox需要针对每种文件类型进行设置,这里需要我们查询对应文件的MIME类型,可以用以下链接进行查询:MIME 参考手册

Chrome 文件下载

Chrome浏览器类似,设置其options:

  • download.default_directory:设置下载路径
  • profile.default_content_settings.popups:设置为 0 禁止弹出窗口

它的设置就简单多了,看个示例:

# -*- coding: utf-8 -*-

from selenium import webdriver
from time import sleep


options = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': 'd:\\'}
options.add_experimental_option('prefs', prefs)

driver = webdriver.Chrome(executable_path='D:\\chromedriver.exe', chrome_options=options)
driver.get('http://sahitest.com/demo/saveAs.htm')
driver.find_element_by_xpath('//a[text()="testsaveas.zip"]').click()
sleep(3)
driver.quit()

看,文件下载也很简单吧。


更多关于python selenium的文章,请关注我的CSDN专栏:Python Selenium自动化测试详解

### 影刀 RPA 实现弹出文件选择窗口功能 在影刀 RPA 中,可以通过调用 JavaScript 或者内置的操作模块来实现弹出文件选择窗口的功能。以下是具体的方法: #### 方法一:利用 JavaScript 打开文件选择对话框 影刀支持通过执行自定义 JavaScript 来完成复杂的网页交互操作。可以编写一段简单的 JavaScript 代码,触发 `<input type="file">` 的点击事件,从而弹出文件选择窗口。 ```javascript // 创建一个隐藏的 input 元素并触发其 click() 方法 var fileInput = document.createElement('input'); fileInput.type = 'file'; fileInput.click(); ``` 上述代码可以在影刀的任务流中通过 **“运行 JS”** 动作节点执行[^2]。此方式适用于需要手动选择文件的情况。 --- #### 方法二:直接设置文件路径(无需人工干预) 如果目标是让 RPA 自动上传某个已知路径下的文件,则可以直接使用 `value` 属性为输入框赋值。例如: ```javascript document.querySelector('#file-input-id').value = 'C:\\path\\to\\your\\file.txt'; ``` 需要注意的是,在某些现代浏览器中,出于安全原因可能允许直接修改文件输入框的 value 值。此时建议结合其他技术手段绕过限制,比如切换至无头模式或者调整测试环境配置[^3]。 --- #### 方法三:借助第三方插件或扩展 对于更复杂的需求,还可以考虑引入额外的支持库。例如 Node.js 社区中有许多成熟的解决方案可供选用。这些方案通常能够提供更加灵活可控的行为表现[^4]。 > 注意事项:实际应用过程中需确保所选方法兼容目标系统的特性以及遵循相关法律法规的要求。 --- ### 示例流程图解 假设我们要构建这样一个场景——访问某网站登录界面后上传个人照片作为头像: 1. 使用自动选取工具定位到对应的 HTML 元素 (如按钮)[^1]; 2. 编写相应逻辑处理程序; 3. 测试验证最终效果直至满足预期为止. ```python from selenium import webdriver driver = webdriver.Chrome() driver.get("https://example.com/upload") # 定位文件上传控件并通过 send_keys 发送绝对路径给它 upload_element = driver.find_element_by_id('profile-pic') upload_element.send_keys('/absolute/path/to/image.jpg') # 提交表单或其他后续动作... submit_button = driver.find_element_by_css_selector('.btn-submit') submit_button.click() print("File uploaded successfully!") ``` 以上 Python Selenium 片段仅作参考用途,请依据实际情况调整适配器类型及其参数设定。 ---
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值