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

如何仅在TestRail特定项目中应用UI脚本?

解决TestRail单项目应用UI脚本的问题

由于TestRail自带的URL包含/排除规则无法通过项目ID过滤,你可以在UI脚本内部添加项目ID判断逻辑,仅当当前项目匹配目标ID时执行特定操作(比如发送Slack消息),具体实现如下:

核心思路

TestRail的全局UI脚本会在所有项目页面加载,我们可以通过脚本主动获取当前页面的项目ID,再和目标ID做对比,仅匹配时执行业务逻辑,绕开URL匹配的限制。

具体实现

  1. 获取当前项目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]
  2. 添加条件判断逻辑:在脚本中加入判断,仅目标项目执行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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:33:05