Selenium Grid 4.48.0 与 Firefox 99 镜像发布全解析:读懂 docker-selenium 的浏览器版本标签体系
测试后端云原生容器编排可观测性【免费下载链接】docker-seleniumProvides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Container Platform, making it easier to perform browser automation at scale项目地址https://gitcode.com/GitHub_Trending/do/docker-selenium点击查看免费下载Selenium Grid 的 docker-selenium 项目为每个 Grid 版本同时发布多套浏览器镜像而 CHANGELOG/4.48.0/firefox_99.md 正是 Firefox 99.0.1 随 Grid 4.48.0 发布时的完整打标签记录。本文以这份变更日志为骨架结合 tag_and_push_browser_images.sh、NodeFirefox/Dockerfile 与 docs/docker-hub/node-firefox.md 等仓库源码逐行拆解镜像打标签命令的每个参数、版本探测机制、标签命名规范及其底层实现。读完你将能读懂任何一份浏览器变更日志并掌握如何在生产环境中精确选取和验证对应的 Firefox 镜像标签。这份变更日志记录了什么firefox_99.md全文是一段发布脚本的标准输出记录了一次针对Firefox 99.0.1的镜像打标签过程。核心事实包括目标 Grid 版本4.48.0构建日期20260909即完整 Grid 标签4.48.0-20260909浏览器版本Firefox 99.0.1短版本99.0驱动版本GeckoDriver 0.37.1短版本0.37涉及镜像selenium/node-firefox与selenium/standalone-firefox两套镜像共打出 12 个标签6 种标签 × 2 个镜像。在 CHANGELOG/README.md 的 Selenium Grid x Browser Version Matrix 矩阵中Grid 4.48.0 行、Firefox 99 列上的 ✓ 即链接到这份文档。该矩阵的存在动机正如其 README 所述既要跟进最新 Grid 核心版本又要保留按浏览器版本精确锁定镜像的能力——用户找到标签、拉取镜像、直接开始测试。打标签命令逐参数拆解变更日志第一行是完整调用./tag_and_push_browser_images.sh 4.48.0 20260909 selenium false firefox true对照 tag_and_push_browser_images.sh 开头的参数定义这 6 个位置参数的含义分别是位置值脚本变量含义$14.48.0VERSIONSelenium Grid 版本$220260909BUILD_DATE构建日期与 VERSION 拼接为TAG_VERSION4.48.0-20260909$3seleniumNAMESPACE镜像命名空间Docker Hub 账号$4falsePUSH_IMAGE是否同时推送镜像本次仅本地打标签$5firefoxBROWSER浏览器类型进入case分支分发$6trueRELEASE_OLD_VERSION是否为旧版本浏览器执行发布直接影响标签集合脚本随后打印Tagging images for browser firefox, version 4.48.0, build date 20260909, namespace selenium与日志第二行完全吻合。在生产环境这套调用也可以经由 Makefile 的tag_and_push_firefox_images目标间接触发其默认参数由 Makefile 顶部变量提供PUSH_IMAGEfalse、RELEASE_OLD_VERSIONfalse并通过tag_and_push_browser_images聚合目标统一编排。版本探测版本号从哪里来日志的第三到第八行是版本探测输出其逻辑位于脚本的 firefox 分支tag_and_push_browser_images.shFIREFOX_VERSION$(docker run --rm ${NAMESPACE}/node-firefox:${TAG_VERSION} firefox --version | awk {print $3}) GECKODRIVER_VERSION$(docker run --rm ${NAMESPACE}/node-firefox:${TAG_VERSION} geckodriver --version | awk NR1{print $2})即临时启动刚构建好的node-firefox:4.48.0-20260909镜像在容器内执行firefox --version与geckodriver --version再用 awk 截取版本字段。这是以镜像内部实际软件版本为准的探测方式而不是信任构建参数保证标签与实际二进制完全一致——这正是日志中Firefox version - 99.0.1、GeckoDriver version - 0.37.1的来源。随后调用short_version()tag_and_push_browser_images.sh取前两段99.0.1 - 99.0 0.37.1 - 0.37短版本用于生成简化标签。Chrome 分支还额外支持--platform参数指定探测架构chrome 分支通过docker run --platform ${PLATFORM}而 firefox 分支未使用该参数说明其版本探测不区分平台。六种标签与两套镜像的完整矩阵日志第 9-20 行共 12 个Tagged输出。retag()函数tag_and_push_browser_images.sh会对node-firefox和standalone-firefox各执行一次打标签因此 6 种标签 × 2 个镜像 12 行。6 种标签模式如下序号标签模式示例node-firefox1浏览器完整版-驱动完整版-grid-完整Grid标签99.0.1-geckodriver-0.37.1-grid-4.48.0-202609092浏览器完整版-驱动完整版-构建日期99.0.1-geckodriver-0.37.1-202609093浏览器完整版-构建日期99.0.1-202609094浏览器短版-驱动短版-grid-完整Grid标签99.0-geckodriver-0.37-grid-4.48.0-202609095浏览器短版-驱动短版-构建日期99.0-geckodriver-0.37-202609096浏览器短版-构建日期99.0-20260909这与 docs/docker-hub/node-firefox.md 中如何选择正确标签一节描述的约定完全一致selenium/node-firefox-browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD及其全部排列组合。注意日志只有 6 种标签而不是脚本注释里暗示的全部 10 种。原因在于第 6 个参数RELEASE_OLD_VERSIONtrue——当它为false时脚本才会额外追加 4 个不带构建日期的通用标签99.0.1-geckodriver-0.37.1、99.0.1、99.0-geckodriver-0.37、99.0。本次对 Firefox 99 这一较旧浏览器版本执行发布时该参数为true因此跳过了这 4 个通用标签避免旧版本浏览器以通用标签形式长期驻留。底层实现Firefox 99 与 GeckoDriver 0.37.1 如何进入镜像标签背后的版本由 NodeFirefox/Dockerfile 的构建逻辑决定它也是tag_and_push_browser_images.sh所探测镜像的构建来源Firefox 安装NodeFirefox/Dockerfile构建参数FIREFOX_VERSION决定安装方式。对于 99 这种小于 136 的版本会走 package 下载路径由 install-firefox-package.sh 从 Mozilla 官方 CDN 下载.deb或.tar.bz2包并解压到/opt/firefox-99.0.1同时ln -fs建立/usr/bin/firefox软链接。镜像内还会执行firefox --version | awk {print $3} /opt/selenium/browsers/firefox/version这正是探测脚本所用命令的同一来源保证构建期写入的版本信息与运行期--version输出一致。GeckoDriver 安装NodeFirefox/Dockerfile默认GECKODRIVER_VERSIONlatest时先解析 mozilla/geckodriver 的最新 release 标签再按架构下载对应 tar 包最终通过软链接固定到/usr/bin/geckodriver。GeckoDriver 0.37.1 即 4.48.0 发布时解析到的版本。运行期使用Node 启动脚本 start-selenium-node.sh 在启动 Grid Node 时会显式注入-Dwebdriver.gecko.driver/usr/bin/geckodriver确保 WebDriver 会话使用镜像内固定的 GeckoDriver 路径NodeFirefox/Dockerfile 还写入了{moz:firefoxOptions: {binary: ...}}到/opt/selenium/browsers/firefox/binary_location供 Grid 自动生成 Node 配置时引用。如何拉取和使用这些标签以日志第 9 行为例若需要Firefox 99.0.1 GeckoDriver 0.37.1 Grid 4.48.0-20260909这一最精确组合docker pull selenium/node-firefox:99.0.1-geckodriver-0.37.1-grid-4.48.0-20260909若只想锁定浏览器大版本而接受驱动随之绑定可使用短版本标签docker pull selenium/node-firefox:99.0-20260909按 docs/docker-hub/node-firefox.md 的指引Node 镜像需与 Hub 在同一 Docker 网络内协作docker network create grid docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest docker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub --shm-size2g \ selenium/node-firefox:99.0-geckodriver-0.37-grid-4.48.0-20260909测试代码指向http://localhost:4444即可可选地通过http://localhost:7900/?autoconnect1resizescalepasswordsecret观察容器内画面。注意运行含浏览器的镜像务必加--shm-size2g使用宿主共享内存避免浏览器崩溃。使用后清理网络docker network rm grid。文档同时建议使用完整标签固定浏览器与 Grid 版本而非latest。版本矩阵的生成与归档机制这类变更日志并非手写而是由 CHANGELOG/generate-matrix-readme.py 驱动。它按\d\.\d\.\d识别版本目录、扫描每个浏览器_版本.md文件re.match(r([\w-])_(\d)\.md)自动生成 CHANGELOG/README.md 中的矩阵表旧 Grid 版本目录会被移入archived/仅保留最新版本在前台。因此firefox_99.md既是一次发布的机器可读记录也是矩阵表中 Firefox 99 一列的唯一权威链接目标保证了版本矩阵 → 变更日志 → 镜像标签三者之间的可追溯闭环。赞分享测试后端云原生容器编排可观测性【免费下载链接】docker-seleniumProvides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Container Platform, making it easier to perform browser automation at scale项目地址https://gitcode.com/GitHub_Trending/do/docker-selenium点击查看免费下载相关推荐Selenium Grid 4.48.0 发布 Firefox 137.0.2docker-selenium 浏览器镜像标签体系与发布流程全解析Selenium Grid 4.48.0 发布 Firefox 137.0.2docker selenium 浏览器镜像标签体系与发布流程全解析 本文以 CH测试后端云原生容器编排可观测性docker-selenium 浏览器镜像标签体系详解以 Selenium Grid 4.48.0 与 Chrome 99 版本组合为例docker selenium 浏览器镜像标签体系详解以 Selenium Grid 4.48.0 与 Chrome 99 版本组合为例 本篇技术指南聚焦 d测试后端云原生容器编排可观测性Selenium Grid 4.48.0 发布 Edge 145 镜像docker-selenium 浏览器版本标签体系与使用指南Selenium Grid 4.48.0 发布 Edge 145 镜像docker selenium 浏览器版本标签体系与使用指南 本文以 docker se测试后端云原生容器编排可观测性上一篇kitty-scrollback.nvim与其他终端插件的对比分析为什么选择这个Ameowzing工具下一篇opencode 开发规范深度解读AGENTS.md 如何约束 SDK 生成、依赖分层与 V2 会话核心创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

文章转口播稿风格指南:为 web-video-presentation 编写「念出来不别扭」的视频脚本

文章转口播稿风格指南:为 web-video-presentation 编写「念出来不别扭」的视频脚本

人工智能AI 技能/插件提示工程 【免费下载链接】garden-skills ConardLis open-source Skills collection, featuring web design, knowledge retrieval, image generation, and more. 项目地址: https://gitcode.com/GitHub_Trending/we/garden-skills 点击查看 免…

2026/10/4 1:53:37 阅读更多 →
OpenAvatarChat MuseTalk 数字人 Handler 实战指南:依赖模型、配置参数与运行部署

OpenAvatarChat MuseTalk 数字人 Handler 实战指南:依赖模型、配置参数与运行部署

数字人AI 应用语音多模态音视频后端 【免费下载链接】OpenAvatarChat 项目地址: https://gitcode.com/gh_mirrors/op/OpenAvatarChat 点击查看 免费下载 本指南以 docs/reference/handlers/avatar/musetalk.md 为骨架,结合仓库源码,系统讲解…

2026/10/4 1:53:37 阅读更多 →
将 Adam 梯度同步(Reduce-Scatter)移入反向 Hook:modded-nanogpt 分布式优化器每步提速约 0.7 秒的工程实践

将 Adam 梯度同步(Reduce-Scatter)移入反向 Hook:modded-nanogpt 分布式优化器每步提速约 0.7 秒的工程实践

人工智能大模型预训练分布式训练模型优化深度学习 【免费下载链接】modded-nanogpt NanoGPT (124M) in 90 seconds 项目地址: https://gitcode.com/GitHub_Trending/mo/modded-nanogpt 点击查看 免费下载 本篇文章以 modded-nanogpt 仓库 track_1_short 2025-10-31…

2026/10/4 1:52:37 阅读更多 →

最新新闻

《三国演义》人物出场统计:Python中文文本挖掘实战

《三国演义》人物出场统计:Python中文文本挖掘实战

最近在整理中文文本挖掘的入门案例时,手边一直放着一个名为threekingdoms.txt的文件——《三国演义》的中文纯文本。很多人都拿它当过练手语料,最经典的需求就是“人物出场统计”:把三国人物按出现次数排个序,看看谁才是全书真正的…

2026/10/4 7:06:46 阅读更多 →
国际学术会议投稿避坑:EI/Scopus检索与IEEE/ACM出版识别指南

国际学术会议投稿避坑:EI/Scopus检索与IEEE/ACM出版识别指南

每年到了年底,实验室的群里和邮箱里就会扎堆出现各种会议通知。2026年2月的国际学术会议清单也已经挂出来了,理工社科都有,像艾思科蓝这类信息平台整理得尤其整齐:EI会议、IEEE/ACM/JPCS权威出版、双一流主办、院士主讲、15城联动…

2026/10/4 7:06:46 阅读更多 →
消防指挥论文别硬扛:从火场调研到定稿,我会这样搭 AI 工具箱 [特殊字符]

消防指挥论文别硬扛:从火场调研到定稿,我会这样搭 AI 工具箱 [特殊字符]

先把场景说具体:假如你是消防指挥专业学生,正在做本科毕业论文,题目类似 《城市商业综合体地下停车场火灾应急指挥流程优化研究——以某市某商圈为例》。 这题难就难在,它不是单纯背理论就能写完:你要梳理接警响应、力…

2026/10/4 7:06:46 阅读更多 →
从一组定位轨迹到一篇合格毕设:导航专业的 AI 工具搭子清单 [特殊字符]

从一组定位轨迹到一篇合格毕设:导航专业的 AI 工具搭子清单 [特殊字符]

先把场景说具体:资源环境与安全大类 / 测绘地理信息类 / 导航与位置服务专业的同学,很可能会遇到这样一个毕业设计—— “校园或园区室内外无缝导航定位系统设计与精度评估” 要完成 GNSS 室外定位、UWB/蓝牙 Beacon 等室内定位补充、电子地图展示、路径…

2026/10/4 7:06:46 阅读更多 →
经济学论文用AI生成论文软件怎么写才不踩雷?三步稳妥用法

经济学论文用AI生成论文软件怎么写才不踩雷?三步稳妥用法

经济学专业的同学对论文又爱又怕:爱的是选题丰富,怕的是计量模型、回归结果、稳健性检验一套流程走下来,任何一个环节出错都得推倒重来。于是不少人把目光投向 AI 生成论文软件,结果生成的文字被导师一眼看穿——"这段边际分…

2026/10/4 7:06:46 阅读更多 →
Linux环境下华为Hilink SDK接入实战:从环境搭建到设备量产

Linux环境下华为Hilink SDK接入实战:从环境搭建到设备量产

标题里写着“目录”,其实就是整个系列的第一篇——把项目背景、技术选型、目录结构、开发规划一次讲清楚。这篇文章我按照自己在Linux环境下跑通华为Hilink SDK的完整经历来写,把踩过的坑、想明白的逻辑、后续开发路线都交代一遍,给准备入坑的…

2026/10/4 7:05:46 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →