使用 Firefox Linux 和 Selenium 下载由 JavScript 生成的文件,无需确认

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

我想从网页上自动下载一些 XLSX 文件,而无需 Firefox 要求我确认。我在 Stackoverflow 上尝试了 Selenium tutorial 和其他答案,但没有人给我预期的结果。

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

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">

使用 Firefox Linux 和 Selenium 下载由 JavScript 生成的文件,无需确认

使用 Firefox Linux 和 Selenium 下载由 JavScript 生成的文件,无需确认

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

lanjiong 回答:使用 Firefox Linux 和 Selenium 下载由 JavScript 生成的文件,无需确认

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/19805.html

大家都在问