返回知识中心
入门

浏览器自动化版本固定与更新

用明确的版本固定、兼容性证据和回滚条件规划浏览器与 driver 更新。

文档中心

想直接进入 入门 文档吗?

这篇文章属于博客内容库。若你要步骤化配置、参考说明和持续更新,请直接进入对应 docs 分区。

固定版本经过候选比较后进入审查更新或回滚

可重复的自动化把浏览器、driver、framework、profile 和应用视为一个经过验证的发布集合。可变标签不能证明 worker 使用了哪个二进制文件。固定输入,记录运行时解析版本,把更新作为有回滚路径的比较。更广泛的浏览器 release 验证指南不属于本文的版本所有权范围;Selenium profile 集成指南说明 profile 所有权。

Release 契约

写明路由、合成账号、可见结果、支持系统和实际需要的能力。记录浏览器与 driver 家族、补丁评估方法和晋级证据,也记录应用和 framework 版本。

使用 digest、lockfile 或工件标识,并在 job 开始时解析一次。重试使用同一集合,或明确成为新的候选尝试。

版本与所有权矩阵

输入记录所有者证据回滚
浏览器二进制工件和版本浏览器平台干净流程恢复旧工件
driver兼容家族自动化平台会话协商恢复旧 driver
frameworklockfile/runtime测试团队fixture/断言恢复 lockfile
状态schema/baseline场景加载/过期旧 baseline
应用build 标识应用团队可见结果已知 build

smoke test 只证明声明的流程,不证明所有 origin、扩展或设备模式。

固定集合并比较候选

只固定浏览器而不固定 driver 仍可能改变协议。操作系统变化会影响证书、字体和权限。记录所有实际输入,把不可变工件和合成数据分开。

在候选 lane 中运行 baseline 与候选版本,每次只改变一个版本。比较可见状态、导航、权限和清理。文档化 fallback 可以是支持的变化,缺少必需能力则阻止晋级。

候选更新与兼容性

在候选 lane 中使用相同的合成流程、系统镜像和代理策略运行候选版本。启动前记录请求引用和实际解析版本。

更新决策表

观察分类决定后续
契约相同兼容审查后晋级保留回执
有文档化 fallback支持的变化可接受时晋级检查无障碍
driver 无法协商集合不兼容阻止对齐或恢复
流程通过但清理失败基础设施暂停保留错误
远端变更后超时结果不确定不盲目重试查询状态

失败 fixture

import os from 'node:os';
import path from 'node:path';
import { mkdtemp, rm } from 'node:fs/promises';
import { chromium } from 'playwright';
import { expect } from '@playwright/test';
const dir = await mkdtemp(path.join(os.tmpdir(), 'release-pin-'));
const browser = await chromium.launch({ headless: true });
const context = await browser.newContext({ baseURL: 'http://release.test' });
const page = await context.newPage();
await page.route('/fixtures/missing-readiness', route =>
  route.fulfill({ status: 200, contentType: 'text/html', body: '<main><p>候选外壳</p></main>' })
);
let failure;
const remember = (label, error) => {
  const current = new Error(`${label}: ${error.message}`, { cause: error });
  failure = failure ? new AggregateError([failure, current], `${failure.message}; ${label} failed`) : current;
};
try {
  await page.goto('/fixtures/missing-readiness');
  await expect(page.getByRole('status')).toHaveText('Ready', { timeout: 250 });
} catch (error) {
  remember('就绪断言', error);
} finally {
  try {
    await context.close();
  } catch (error) {
    remember('关闭 context', error);
  }
  try {
    await rm(dir, { recursive: true, force: true });
  } catch (error) {
    remember('清理工件', error);
  }
  try {
    await browser.close();
  } catch (error) {
    remember('关闭浏览器', error);
  }
}
if (failure) throw failure;

预期结果指出缺少的就绪信号,不访问无关 origin。远端变更超时应查询服务状态。

更新节奏

安全补丁可以比 major 变更使用更短审查,但两者都记录解析版本并运行失败 fixture。锁定依赖图,单独审查包更新。

回滚与更新政策

回滚恢复完整集合:二进制、driver、framework、schema 和 build。用合成 baseline 在独立 lane 演练。旧二进制不可用就不算可回滚。

安全补丁可以比 major 变更使用更短审查,但两者都记录解析版本并运行失败 fixture。锁定依赖图,单独审查可能改变观察行为的包更新。

证据与边界

回执包含版本、系统镜像、场景、可见结果、替代路径和清理状态。不包含 cookies、个人文字或完整响应。runner 只能观察客户端边界,不能证明服务端保留策略。

BotBrowser 能力与限制

BotBrowser 可为授权的 release 比较提供受控配置和独立 BrowserContexts;参见 多账号隔离文档。它不选择 driver、不固定依赖、不认证应用 build,也不保证跨系统一致。

BotBrowser 支持固定 release 的浏览器输入进行受控比较,但不保证 driver、应用或跨系统兼容性。

对于固定 release,BotBrowser 可以在比较时保持浏览器配置稳定,但不会判断 driver 或应用 build 是否兼容。

保持 baseline 回执不变,并一起记录工件、driver、lockfile、系统镜像和 build。

补丁可能改变协议、证书、渲染或策略,即使版本变化很小。

按边界分类失败:启动、权限、可见结果或基础设施。

明确记录晋级、暂停、回滚或调查决定。

回滚演练要验证工件、driver、schema 和合成流程。

不要增加等待时间来掩盖 release drift。

比较时保持路由、合成数据、代理策略和留存规则一致。

平台例外需要命名 lane、所有者和到期日期。

记录 runner 无法固定的依赖。

比较窗口只保留元数据和获准的合成工件。

保留解析后的标识以便重现确切 worker。

每次比较只改变一个 release 输入。

将候选工件与 baseline 工件分开保存。

即使断言为绿,也要记录缺失的必需能力。

远端变更可能已发生时,超时后查询服务状态。

关闭 context 不能证明服务端删除。

为平台例外设置到期日期。

恢复后再次运行干净流程。

保留解析后的标识以便重现确切 worker。

每次比较只改变一个 release 输入。

将候选工件与 baseline 工件分开保存。

即使断言为绿,也要记录缺失的必需能力。

远端变更可能已发生时,超时后查询服务状态。

关闭 context 不能证明服务端删除。

为平台例外设置到期日期。

恢复后再次运行干净流程。

由流程所有者复核回执。

比较窗口内保持 baseline 不变。

来源

#浏览器自动化#版本固定#更新#兼容性#回滚

让 BotBrowser 从研究走向生产

先用这些指南理解模型,再进入跨平台验证、隔离上下文和面向规模化的浏览器部署。