如何仅在TestRail特定项目中应用UI脚本?
解决TestRail单项目应用UI脚本的问题
由于TestRail自带的URL包含/排除规则无法通过项目ID过滤,你可以在UI脚本内部添加项目ID判断逻辑,仅当当前项目匹配目标ID时执行特定操作(比如发送Slack消息),具体实现如下:
核心思路
TestRail的全局UI脚本会在所有项目页面加载,我们可以通过脚本主动获取当前页面的项目ID,再和目标ID做对比,仅匹配时执行业务逻辑,绕开URL匹配的限制。
具体实现
获取当前项目ID:根据TestRail版本,页面中通常会通过隐藏表单字段、DOM元素属性存储项目ID。比如:
- 查找页面内的隐藏输入框:
document.querySelector('input[name="project_id"]').value - 若URL包含项目路径(如
/index.php?/projects/view/123),也可通过正则提取ID:window.location.href.match(/view\/(\d+)/)[1]
- 查找页面内的隐藏输入框:
添加条件判断逻辑:在脚本中加入判断,仅目标项目执行Slack通知代码。示例代码如下:
// 获取当前项目ID(根据你的TestRail页面结构调整) const currentProjectId = document.querySelector('input[name="project_id"]').value; // 设置你的目标项目ID const targetProjectId = "123"; // 替换为实际项目ID // 仅匹配目标项目时执行Slack通知逻辑 if (currentProjectId === targetProjectId) { // 构造Slack消息内容 const slackMsg = { channel: '#testrail-notifications', text: `TestRail项目 ${targetProjectId} 有新的测试状态更新` }; // 发送Slack请求 fetch('https://slack.com/api/chat.postMessage', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer YOUR_SLACK_BOT_TOKEN' }, body: JSON.stringify(slackMsg) }) .then(res => res.json()) .catch(err => console.error('Slack通知发送失败:', err)); }
注意事项
- 不同TestRail版本的DOM结构可能有差异,建议用浏览器开发者工具(F12)查看页面中项目ID的存储位置,调整获取逻辑。
- 确保Slack机器人令牌有对应频道的消息发送权限,请求参数符合Slack API规范。
内容的提问来源于stack exchange,提问作者elnuggs
相关产品推荐
相关产品推荐

