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

xoefb8l8  于 2022-11-07  发布在  Postman
关注(0)|答案(2)|浏览(226)

我最近发现了postman使用javascript编写预请求和测试脚本的能力。
我试图弄清楚在测试过程中是否可以将一个值复制到剪贴板,同时设置postman环境变量。
例如:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable ("Action ID", jsonData.ActionId);
// set jsonData.ActionId to clipboard
42fyovps

42fyovps1#

通过使用可视化工具并引入clipboard.js CDN,有一种方法可以实现这一点。
这是非常基本的操作,但通过将此脚本添加到Tests选项卡,您可以在Visualize选项卡的响应部分中看到变量值。

pm.environment.set("Action_ID", pm.response.json().ActionId);

let template = `
<html>
<head>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>
</head>
<body>
    <div>
    <div>
        <pre><code style="width:max-content!important;" id="copyText">${pm.environment.get('Action_ID')}</code></pre>
    </div>
    <button class="copyButton" type="button" data-clipboard-action="copy" data-clipboard-target="#copyText" style="background:green;color:white;">Copy to Clipboard</button>
    </div>
</body>
</html>
<script>
    var clipboard = new ClipboardJS('.copyButton');

    clipboard.on('success', function(e) {
        e.clearSelection();
        e.trigger.textContent = '✔ Copied!';
        window.setTimeout(function() {
            e.trigger.textContent = 'Copy to Clipboard';
        }, 2000);
    });
    clipboard.on('error', function(e) {
        e.clearSelection();
        e.trigger.textContent = '✗ Not Copied';
        window.setTimeout(function() {
            e.trigger.textContent = 'Copy to Clipboard';
        }, 2000);
    });

</script>`

pm.visualizer.set(template, pm.response.json())

j91ykkif

j91ykkif2#

@丹尼·丹顿这是个超级聪明的解决方案。谢谢!
这里有一个更简单的自动复制版本。不需要手动点击按钮。

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);

相关问题