首页 > 解决方案 > 如何更改当前运行的 chrome 驱动程序会话中的默认下载目录

问题描述

如何更改当前运行的驱动程序会话中的默认下载目录?因为我需要多次更改下载目录以使用“for”循环将特定文件存储在特定位置。

以下是尝试更改已运行 chrome 驱动程序会话的默认目录的代码:

os.getcwd()
os.chdir("C:\\Site_tracker\\Output")
direc = ['S1_2g3g4g', 'S2_2g3g4g','S3_2g3g4g']
for i in direc:
    if not os.path.exists(i):
        os.makedirs(i)
    download_path=os.path.abspath(i)
    print(download_path)
    chr_Options.add_experimental_option('prefs', {
    "download.default_directory": "download_path", #Change default directory for downloads
    "download.prompt_for_download": False, #To auto download the file
    "download.directory_upgrade": True,
    "plugins.always_open_pdf_externally": True})
    driver1=webdriver.Chrome(chrome_options=chr_Options)

标签: python-3.xselenium

解决方案


下载目录通常在您通过选项设置“download.default_directory”创建浏览器实例时设置,如下所述:How to use chrome webdriver in selenium to download files in python? 或者正如你在片段中所拥有的那样。

如果您想在一个会话期间将文件存储到不同的目录,您有一些选择,但是我选择的一个,因为在同一任务中我还需要更改文件名,是将文件存储到本地 /tmp 目录,重命名并移动它到最后的地方

import os
import shutil

CWD = os.getcwd()
TMP_DIR = CWD + "/tmpf"        # directly downloaded files
if not os.path.isdir(TMP_DIR):
    os.mkdir(TMP_DIR)
DWN_DIR = CWD + '/downloaded_files'   # renamed files from TMP_DIR
if not os.path.isdir(DWN_DIR):
    os.mkdir(DWN_DIR)

在首选项中:“download.default_directory”:TMP_DIR,然后

file_to_download.click()

old_name = os.listdir("./tmpf")[0]
old_file_name = TMP_DIR + "/" + old_name
new_file_name = DWN_DIR + '/' +  "SPECIFIC_Prefix_" + old_name.lower().replace(" ","_")
shutil.move(old_file_name, new_file_name) 
print("File downloaded and moved to: ", new_file_name)

推荐阅读