Mac系统下Selenium操作Firefox下载.3ds文件弹窗无法自动处理问题求解
Selenium 自动下载.3ds格式文件解决方案
核心问题原因
你现有配置未添加.3ds格式对应的MIME类型,且缺少高版本火狐针对未知后缀下载的特殊校验配置,导致下载弹窗始终触发。
火狐浏览器修复方案
- 先确认站点返回的
.3ds文件正确MIME类型:按F12打开浏览器开发者工具的「网络」面板,手动点击下载链接,查看该下载请求响应头的Content-Type字段值,将其补充到配置中。常见3ds文件MIME类型为application/x-3ds、model/3ds,部分站点会返回通用二进制类型application/octet-stream。 - 修改你的代码配置,补充缺失项:
profile = webdriver.FirefoxProfile() # 基础下载配置 profile.set_preference("browser.download.panel.shown", False) profile.set_preference("browser.download.folderList", 2) profile.set_preference("browser.download.useDownloadDir", True) profile.set_preference("browser.download.dir","/Users/myusername/Downloads") # 自动保存配置,补充3ds对应的MIME类型 profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/msword, application/csv, application/ris, text/csv, image/png, application/pdf, text/html, text/plain, application/zip, application/x-zip, application/x-zip-compressed, application/download, application/octet-stream, application/x-3ds, model/3ds") profile.set_preference("browser.helperApps.alwaysAsk.force", False) profile.set_preference("browser.download.forbid_open_with", True) # 关闭下载管理器相关弹窗 profile.set_preference("browser.download.manager.showWhenStarting", False) profile.set_preference("browser.download.manager.alertOnEXEOpen", False) profile.set_preference("browser.download.manager.focusWhenStarting", False) profile.set_preference("browser.download.manager.closeWhenDone", True) profile.set_preference("browser.download.manager.showAlertOnComplete", False) profile.set_preference("browser.download.manager.useWindow", False) profile.set_preference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", False) # 高版本火狐新增配置:允许不安全/未知后缀下载 profile.set_preference("browser.download.allowInsecureDownloads", True) profile.set_preference("browser.safebrowsing.downloads.enabled", False) # Selenium 3.x写法 browser = webdriver.Firefox(firefox_profile=profile,executable_path=GeckoDriverManager().install()) # 如果你用Selenium 4.x请替换为以下写法: # from selenium.webdriver.firefox.options import Options # options = Options() # options.profile = profile # browser = webdriver.Firefox(options=options, executable_path=GeckoDriverManager().install()) browser.maximize_window()
Chrome浏览器备选方案
如果火狐适配仍有问题,可更换为Chrome浏览器,配置逻辑更简单:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from webdriver_manager.chrome import ChromeDriverManager chrome_options = Options() prefs = { "download.default_directory": "/Users/myusername/Downloads", "download.prompt_for_download": False, "download.directory_upgrade": True, "safebrowsing.enabled": True, "download.extensions_to_open": "", "profile.default_content_settings.popups": 0 } chrome_options.add_experimental_option("prefs", prefs) # 允许自动下载.3ds后缀文件 chrome_options.add_argument("--safebrowsing-disable-download-protection") browser = webdriver.Chrome(executable_path=ChromeDriverManager().install(), options=chrome_options) browser.maximize_window()
内容的提问来源于stack exchange,提问作者a_coder
相关产品推荐
相关产品推荐

