我在 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">
在这种情况下,如何配置 Selenium 使 Firefox 尊重 profile
?