You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写脚本让Edge在独立窗口的带色标签组打开预设环境URL

实现ServiceNow多环境自动打开与标签组配置

方案1:Edge扩展(推荐,纯JS实现)

这个方案利用Edge的标签组API,通过轻量扩展实现一键配置所有环境。

步骤1:创建扩展文件

新建文件夹service-now-env-setup,在里面创建两个文件:

manifest.json(扩展配置)

{
  "manifest_version": 3,
  "name": "ServiceNow Env Launcher",
  "version": "1.0",
  "permissions": ["tabs", "tabGroups"],
  "background": {
    "service_worker": "background.js"
  },
  "action": {
    "default_title": "Launch ServiceNow Environments"
  }
}

background.js(核心逻辑)

// 替换为你的实际环境URL
const environments = [
  { url: "https://prod-your-snow-instance.service-now.com", groupName: "Production", color: "green" },
  { url: "https://test-your-snow-instance.service-now.com", groupName: "Test", color: "yellow" },
  { url: "https://dev-your-snow-instance.service-now.com", groupName: "Development", color: "red" }
];

async function launchEnvironments() {
  for (const env of environments) {
    // 打开新窗口加载环境URL
    const newWindow = await chrome.windows.create({ url: env.url, type: "normal" });
    const tabId = newWindow.tabs[0].id;

    // 查找是否已存在对应标签组,不存在则创建
    let existingGroup = await chrome.tabGroups.query({ title: env.groupName });
    let groupId;
    if (existingGroup.length === 0) {
      const newGroup = await chrome.tabGroups.create({ title: env.groupName, color: env.color });
      groupId = newGroup.id;
    } else {
      groupId = existingGroup[0].id;
    }

    // 将当前标签页加入对应标签组
    await chrome.tabs.group({ groupId, tabIds: tabId });
  }
}

// 两种触发方式:点击扩展图标,或Edge启动时自动执行
chrome.action.onClicked.addListener(launchEnvironments);
chrome.runtime.onStartup.addListener(launchEnvironments);

步骤2:加载扩展到Edge

  1. 打开Edge,输入edge://extensions/进入扩展页面
  2. 开启右上角的「开发者模式」
  3. 点击「加载已解压的扩展」,选择你创建的service-now-env-setup文件夹

步骤3:一键启动

  • 点击Edge工具栏的扩展图标,即可自动打开三个环境窗口并配置好标签组
  • 也可以创建Edge快捷方式,添加参数--load-extension="C:\path\to\service-now-env-setup",双击快捷方式直接启动并触发配置

方案2:Node.js脚本(适合熟悉Node.js的场景)

利用Edge的远程调试协议,通过Node.js脚本控制浏览器行为。

步骤1:准备依赖

安装Node.js后,在终端执行:

npm install chrome-remote-interface

步骤2:编写脚本文件setup-snow-envs.js

const CDP = require('chrome-remote-interface');
const { exec } = require('child_process');

// 替换为你的实际环境URL
const environments = [
  { url: "https://prod-your-snow-instance.service-now.com", groupName: "Production", color: "green" },
  { url: "https://test-your-snow-instance.service-now.com", groupName: "Test", color: "yellow" },
  { url: "https://dev-your-snow-instance.service-now.com", groupName: "Development", color: "red" }
];

async function setupSingleEnv(env) {
  // 启动独立Edge实例,使用单独用户目录避免会话冲突
  exec(`start msedge.exe --remote-debugging-port=9222 --user-data-dir="C:\\temp\\edge-snow-profiles\\${env.groupName}" ${env.url}`);
  
  // 等待窗口启动
  await new Promise(resolve => setTimeout(resolve, 1500));
  
  // 连接到远程调试端口
  const client = await CDP({ port: 9222 });
  const { Target, Browser } = client;
  
  // 获取当前页面目标
  const targets = await Target.getTargets();
  const pageTarget = targets.find(t => t.type === 'page' && t.url.includes(env.url.split('/')[2]));
  
  // 设置标签组
  await Browser.setTabGroup({
    tabId: pageTarget.targetId,
    group: { title: env.groupName, color: env.color }
  });
  
  await client.close();
}

// 批量处理所有环境
(async () => {
  for (const env of environments) {
    await setupSingleEnv(env);
  }
})();

步骤3:运行脚本

在终端执行:

node setup-snow-envs.js

即可自动打开三个配置好标签组的Edge窗口。


注意事项

  • 标签组颜色仅支持Edge预设值:grey, blue, red, yellow, green, pink, purple, cyan
  • 方案1的扩展会保留在Edge中,无需每次重新加载;方案2每次运行脚本都会启动新的Edge实例
  • 替换所有your-snow-instance为你的实际ServiceNow实例名称

内容的提问来源于stack exchange,提问作者DL-coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:15:34