首页 > 解决方案 > 使用 Firefox Linux plus Selenium 下载 JavScript 生成的文件,无需确认

问题描述

我在 Ubuntu 20.04 上使用带有 Geckodriver v0.29.1 的 Firefox v90 64 位上的 Selenium Web 浏览器自动化。

我想在没有 Firefox 的情况下从网页自动下载一些 XLSX 文件,请我确认。我在 Stackoverflow 上尝试了Selenium 教程和其他答案,但没有人给我预期的结果。

在我的个人资料定义之上:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

opts = Options()

profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)
profile.set_preference('browser.download.dir', MY_PATH)
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.helperApps.neverAsk.saveToDisk',
                       'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
                       ';application/vnd.ms-excel'
                       ';application/xls'
                       ';application/xlsx')


browser = webdriver.Firefox(profile, options=opts, executable_path=DRIVER_PATH)
browser.get('https://filesamples.com/formats/xlsx')
btn = browser.find_elements_by_class_name('btn-primary')
btn[0].click()

我还通过下面的代码检查了 MIME 类型并显示正确配置:

import requests
requests.head('https://filesamples.com/samples/document/xlsx/sample3.xlsx').headers['content-type']
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'

此代码在上面使用的站点中运行良好。问题是当我在我的公司网站中使用通过 JavaScript 操作生成文件时(点击操作生成一个进程窗口,最后要求保存文件)。

<a id="executarAnaliseForm:accordionAnalise:_btnExportarXlsxCustom" href="#" title="Excel" onclick="jsf.util.chain(this,event,'PrimeFaces.monitorDownload(beforeExport, afterExport);','mojarra.jsfcljs(document.getElementById(\'executarAnaliseForm\'),{\'executarAnaliseForm:accordionAnalise:_btnExportarXlsxCustom\':\'executarAnaliseForm:accordionAnalise:_btnExportarXlsxCustom\'},\'\')');return false">

在此处输入图像描述

在此处输入图像描述

在这种情况下,如何配置 Selenium 以使 Firefox 尊重profile

标签: javascriptpythonseleniumubuntufirefox

解决方案


推荐阅读