在我的 Ubuntu EC2 实例上使用 Selenium,我试图将 Chrome 的下载目录设置为
/home/ubuntu/resolucion
,但下载的文件将转到 /home/ubuntu
(我的脚本 main.py
所在的位置)。我尝试不使用 os
而只是键入 "download.default_directory": "/home/ubuntu/resolucion"
但仍然无法正常工作。下面的代码只在我的电脑上运行良好。
注意:浏览器日志没有错误,脚本执行期间也没有任何错误。
main.py
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import os
options = webdriver.ChromeOptions()
options.add_argument("--no-sandbox")
options.add_argument("--headless")
dir_base = os.path.abspath(os.curdir)
carpeta_resolucion = os.path.join(dir_base, "resolucion")
options.add_experimental_option("prefs", {
"download.default_directory": carpeta_resolucion,
"browser.downloads.dir": carpeta_resolucion,
"directory_upgrade": True,
"download.prompt_for_download": False,
"download.extensions_to_open": "application/xml",
"safebrowsing.enabled": True
})
print(options.to_capabilities())
driver = webdriver.Chrome(service=Service(
ChromeDriverManager().install()), options=options)
这是
options.to_capabilities()
的打印信息:
{'browserName': 'chrome', 'pageLoadStrategy': 'normal', 'goog:chromeOptions': {'prefs': {'download.default_directory': '/home/ubuntu/resolucion', 'browser.downloads.dir': '/home/ubuntu/resolucion', 'directory_upgrade': True, 'download.prompt_for_download': False, 'download.extensions_to_open': 'application/xml', 'safebrowsing.enabled': True}, 'extensions': [], 'args': ['--no-sandbox', '--headless']}}
您可以尝试使用
--user-data-dir
和download.default_directory
而不是options.add_experimental_option
来设置下载位置
删除所有
options.add_experimental_option
代码并添加
options.add_argument(f"--user-data-dir={dir_base}/user-data")
options.add_argument(f"--download.default_directory={carpeta_resolucion}")
这可能会解决您的问题,并允许您在 EC2 上设置下载目录