javascript - 使用 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
?
解决方案
推荐阅读
- javascript - JavaScript 中的密码字符检查器
- java - 使用 Facebook Graph Api 获取 FB ID
- assembly - 如何获取 VESA BIOS 信息
- angular - Making token accessible to other views after being set in class
- ruby-on-rails - 在 Heroku 中使用 gem Watir - 找不到 Chrome 二进制文件
- android - Ionic 3 | Facebook Native not working after building --release android
- c# - 添加类
列出 > - excel - 检查工作簿 VBA 中的出现次数
- java - 如何在 Firebase 中为注册用户提供身份验证链接?
- safari - Safari/Chrome 浏览器无法在 iPhone 上播放超过 16 个视频的视频