多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## **4.14 下载文件** WebDriver 允许我们设置默认的文件下载路径,也就是说,文件会自动下载并且存放到设置的目录中,不同的浏览器设置方式不同。 **下面以 Firefox 浏览器为例,演示文件的下载。** ``` import os from selenium import webdriver fp = webdriver.FirefoxProfile() fp.set_preference("browser.download.folderList", 2) 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_link_text("selenium-4.0.0-py3").click() ``` 为了能在 Firefox 浏览器中实现文件的下载,我们需要通过 FirefoxProfile()对其做一些设置。 ``` browser.download.folderList ``` 设置为 0,表示文件会下载到浏览器默认的下载路径;设置为 2,表示文件会下载到指定目录。 ``` browser.download.dir ``` 用于指定下载文件的目录。通过 os.getcwd()方法获取当前文件的所在位置,即下载文件保存的目录。 ``` browser.helperApps.neverAsk.saveToDisk ``` 指定要下载文件的类型,即 Content-type 值,“binary/octet-stream”用于表示二进制文件。 HTTP Content-type 常用对照表参见 http://tool.oschina.net/commons。 可以通过在 Firefox 浏览器地址栏输入“about:config”进行参数的设置,如图 4-7 所示。 在调用WebDriver的Firefox类时将所有设置选项作为firefox_profile参数传递给Firefox浏览器。Firefox 浏览器在下载时会根据这些设置将文件下载到当前脚本目录下。 <br /> **下面以 Chrome 浏览器为例,演示文件的下载。** ``` import os from selenium import webdriver options = webdriver.ChromeOptions() prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': os.getcwd()} options.add_experimental_option('prefs', prefs) driver = webdriver.Chrome(options=options) driver.get("https://pypi.org/project/selenium/#files") driver.find_element_by_partial_link_text("selenium-4.0.0-py3").click() ``` Chrome 浏览器在下载时默认不会弹出下载窗口,这里主要想修改默认的下载路径。 ``` profile.default_content_settings.popups ``` 设置为 0,表示禁止弹出下载窗口。 ``` download.default_directory ``` 设置文件下载路径,使用 os.getcwd()方法获取当前脚本的目录作为下载文件的保存位置。