繁体   English   中英

使用 python 永久更改浏览器的下载路径(chrome、firefox 和 edge)

[英]Permanently change the download path of browsers(chrome, firefox and edge) with python

你好堆栈溢出社区。 我一直在寻找一种解决方案,将浏览器的默认下载路径(chrome、firefox 和 edge)永久更改为我在 python 脚本中指定的路径。 到目前为止,这个 python 脚本是用 chrome 测试的,它没有提供预期的结果!

from selenium import webdriver

chromeOptions = webdriver.ChromeOptions()
prefs = {"download.default_directory" : "/some/path"}
chromeOptions.add_experimental_option("prefs",prefs)
chromedriver = "./chromedriver"
driver = webdriver.Chrome(executable_path=chromedriver, chrome_options=chromeOptions)

这个脚本的本质是,打开一个新的 chrome window 并将其下载路径更改为脚本中指定的路径,所做的更改是。 仅限于此打开的 window 在 window 关闭时被丢弃。

它似乎正在创建某种 session,这当然不会影响原始/默认窗口的设置!

我可能没有使用正确的词语/术语来描述问题,如果我的问题不够清楚,请告诉我!

编辑:就我而言,使用 selenium 无关紧要/没有必要,我想要的是一个更通用的解决方案(即插即用),它在运行(脚本)时会更改路径并且不需要任何配置文件路径或二进制文件的设置硒的情况!

您可以加载默认配置文件和所有配置。
您可以在此处找到如何将默认配置文件加载到 Chrome 的详细说明:

from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("user-data-dir=C:\\Path") #Path to your chrome profile
w = webdriver.Chrome(executable_path="C:\\Users\\chromedriver.exe", chrome_options=options)

我已经在我的机器上重现了这个问题,似乎通过使用 selenium 更改 ChromeOptions 和prefs选项,我们只能更改 selenium 打开 Z05B8C74CBD96FBF2DE4C1A352702FFF4Z 设置,而不是 Chrome 浏览器设置。

将浏览器的默认下载路径(Chrome、Firefox 和 edge)永久更改为我在 python 脚本中指定的路径。 我建议您可以直接从注册表更改下载路径(不使用 selenium 网络驱动程序)。

例如,chrome Registry 路径如下:

在此处输入图像描述

然后,我们可以使用以下代码来更改注册表项值。

import winreg
key = winreg.CreateKey(winreg.HKEY_CURRENT_USER, 'Software\Policies\Google\Chrome')
winreg.SetValueEx(key, 'DownloadDirectory', 0, winreg.REG_SZ, 'D:\TempData')
key.Close()

结果是这样的:

在此处输入图像描述

对于 Microsoft Edge 浏览器,下载文件夹注册表路径为:

Computer\HKEY_CURRENT_USER\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Storage\microsoft.microsoftedge_8wekyb3d8bbwe\MicrosoftEdge\Main (设置默认下载目录键值,像这样

或设置用户 shell 文件夹:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders

在此处输入图像描述

然后,我们可以使用下面的代码来修改注册表键值。

import winreg
key = winreg.CreateKey(winreg.HKEY_CURRENT_USER, r'Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders')
winreg.SetValueEx(key,'{374DE290-123F-4565-9164-39C4925E467B}', 0, winreg.REG_SZ, 'D:\TempData')
key.Close()

[注意] 使用此方法修改浏览器设置时,最好有管理员权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM