[英]How do you copy response values to the clipboard in Postman javascript tests?
我最近發現 postman 可以使用 javascript 編寫預請求和測試腳本。
我試圖弄清楚是否可以在測試期間結合設置 postman 環境變量將值復制到剪貼板。
例如:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable ("Action ID", jsonData.ActionId);
// set jsonData.ActionId to clipboard
有一種方法可以通過使用可視化工具並引入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())
@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);
// 使用 navigator.clipboard.writeText()
這是一個不使用任何 CDN 或庫的示例。
let template =
`
<script>
pm.getData(function (error, data)
{
let textBox = document.createElement('textarea');
textBox.value = data.key;
document.body.appendChild(textBox);
textBox.focus();
textBox.select();
document.execCommand('copy');
document.body.removeChild(textBox);
});
</script>
`;
pm.visualizer.set(template,
pm.response.json()
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.