如何在 Postman javascript 测试中将响应值复制到剪贴板?

Efi*_*fie 13 javascript testing postman

我最近发现邮递员能够使用 javascript 编写预请求和测试脚本。

我试图弄清楚是否可以在测试期间结合设置邮递员环境变量将值复制到剪贴板。

例如:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable ("Action ID", jsonData.ActionId);
// set jsonData.ActionId to clipboard
Run Code Online (Sandbox Code Playgroud)

Dan*_*ton 33

有一种方法可以实现这一点,即使用可视化工具并引入 CDN clipboard.js

\n

这是非常基本的,但通过将此脚本添加到选项卡,您可以在选项卡的响应部分中Tests看到变量值。Visualize

\n
pm.environment.set("Action_ID", pm.response.json().ActionId);\n\nlet template = `\n<html>\n<head>\n    <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script>\n    <script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>\n</head>\n<body>\n    <div>\n    <div>\n        <pre><code style="width:max-content!important;" id="copyText">${pm.environment.get(\'Action_ID\')}</code></pre>\n    </div>\n    <button class="copyButton" type="button" data-clipboard-action="copy" data-clipboard-target="#copyText" style="background:green;color:white;">Copy to Clipboard</button>\n    </div>\n</body>\n</html>\n<script>\n    var clipboard = new ClipboardJS(\'.copyButton\');\n\n    clipboard.on(\'success\', function(e) {\n        e.clearSelection();\n        e.trigger.textContent = \'\xe2\x9c\x94 Copied!\';\n        window.setTimeout(function() {\n            e.trigger.textContent = \'Copy to Clipboard\';\n        }, 2000);\n    });\n    clipboard.on(\'error\', function(e) {\n        e.clearSelection();\n        e.trigger.textContent = \'\xe2\x9c\x97 Not Copied\';\n        window.setTimeout(function() {\n            e.trigger.textContent = \'Copy to Clipboard\';\n        }, 2000);\n    });\n\n</script>`\n\npm.visualizer.set(template, pm.response.json())\n
Run Code Online (Sandbox Code Playgroud)\n

在此输入图像描述

\n


Cez*_*wak 9

@Danny Dainton 这是超级聪明的解决方案。谢谢你!

这是带有自动复制功能的更简单版本。无需手动点击按钮。

const response = pm.response.json();

let template = `<html><body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.11/clipboard.min.js"></script>
    <code style="width:max-content!important;padding:10px;display:block;" id="copyText">${response.token}</code>
    <button id="copyButton" type="button" data-clipboard-action="copy" data-clipboard-target="#copyText" style="background:green;color:white;">Copy to Clipboard</button>
    <script>
        new ClipboardJS('#copyButton')
            .on('success', function(e) {
                e.clearSelection();
            })
            .on('error', function(e) {
                e.clearSelection();
                copyText.style.borderColor = 'red';
            });
        copyButton.click();
    </script>
</body></html>`;

pm.visualizer.set(template);
Run Code Online (Sandbox Code Playgroud)