如何编写脚本让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
- 打开Edge,输入
edge://extensions/进入扩展页面 - 开启右上角的「开发者模式」
- 点击「加载已解压的扩展」,选择你创建的
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
相关产品推荐
相关产品推荐

