找回密码
 立即注册
首页 业界区 业界 PostMan加载三方JS

PostMan加载三方JS

哈妙思 前天 11:30
PostMan加载三方JS

1. 背景

在Postman中做接口测试时,需要使用第三方js包或者自己封装的js工具处理接口参数.此时需要在执行脚本前加载外部js文件
,并且注入运行环境.目前动态执行js文件,可以使用eval或者使用 new Function()方式加载.这里优先考虑第二种方式.
以下介绍四种方法

  • 通过集合参数或者环境变量添加
  • 通过请求响应添加
  • 直接在脚本中添加
  • 通过pm.require添加npm包
动态添加的脚本如果不能访问注入的对象,可以在调用前添加this.xxx试下.
以下测试代码,均在Pre-request Script页签中执行
测试方式为在在Postman中添加一个GET请求
请求地址为https://www.小游戏.地心侠士.com
虽然地址不存在,但是依然可以测试脚本加载情况.
2. 通过参数添加
  1. (function(){
  2. var script = pm.collectionVariables.get("dayjs_code");
  3. (new Function(script))();
  4. console.log("加载dayjs后,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS'))
  5. })()  
复制代码
在左下角的Console面板中输出的内容如下:
  1. 加载dayjs后,获取当前时间: 2025-12-30 19:14:14 949
  2. GET https://www.小游戏.地心侠士.com
复制代码
3. 通过网络添加
  1. pm.sendRequest("https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.18/dayjs.min.js",(error,resp)=>{
  2.    let script = resp.text();
  3.    (new Function(script))()
  4.    console.log("加载dayjs后,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS'))   
  5. })
复制代码
在左下角的Console面板中输出的内容如下:
  1. GET https://cdn.bootcdn.net/ajax/libs/dayjs/1.11.18/dayjs.min.js
  2. 加载dayjs后,获取当前时间: 2025-12-30 19:05:09 506
  3. GET https://www.小游戏.地心侠士.com
复制代码
4. 使用eval方式加载

以上的示列,都是是通过Function()方式加载.使用eval方式,参考如下
  1. (function(){
  2. var script = pm.collectionVariables.get("dayjs_code");
  3. eval(script)
  4. console.log("使用eval初始脚本,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS'))
  5. })()
复制代码
在左下角的Console面板中输出的内容如下:
  1. 使用eval初始脚本,获取当前时间: 2025-12-31 09:26:56 460
  2. GET https://www.小游戏.地心侠士.com
复制代码
5. 直接复制到脚本中

直接下载dayjs.min.js文件,复制到Pre-request Script内容区域.然后再写具体测试脚本
这里需要注意的是,在调用是需要使用this.dayjs(),不能直接使用dayjs(),可能和postman执行环境没有window对象有关
  1. console.log("加载dayjs后,获取当前时间: "+this.dayjs().format('YYYY-MM-DD HH:mm:ss SSS'))
复制代码
在左下角的Console面板中输出的内容如下:
  1. 加载dayjs后,获取当前时间: 2025-12-30 19:21:46 064
  2. GET https://www.小游戏.地心侠士.com
复制代码
6. 使用pm.require添加npm包

在高级版本中,或者直接在官网云环境可以是使用
  1. const dayjs = pm.require('npm:dayjs@1.11.19');
  2. console.log("加载dayjs后,获取当前时间: "+ dayjs().format('YYYY-MM-DD HH:mm:ss SSS'))
复制代码
在左下角的Console面板中输出的内容如下:
  1. 加载dayjs后,获取当前时间: 2025-12-30 19:33:07 825
  2. GET https://www.小游戏.地心侠士.com
复制代码
7. 总结及扩展

总之,在postman的沙箱环境中,加载三方JS主要是两个路径

  • 中JS动态执行能力,使用eval(scriptContent)和new Function(scriptContent)
  • 使用Postman内置的包管理能力 pm.require('npm:dayjs@1.11.19'); 可能会有版本要求
内置Web Crypto objects对象,比如Crypto CryptoKey SubtleCrypto crypto property
比如,在Postman脚本中,需要实现AES加密代码如下:
  1. var ciphertext = CryptoJS.AES.encrypt('小游戏地心侠士', '微信').toString();
  2. console.log("AES加密内容 "+ ciphertext)
复制代码
在左下角的Console面板中输出的内容如下:
  1. AES加密内容  U2FsdGVkX1/N/cvcwUkO1F+V66VM/XFfkBnAJUPk20TpE5Db2+H+lSa2xOx1yAeI
  2. GET https://www.小游戏.地心侠士.com
复制代码
PostMan内置对象参考地址如下:
https://www.cnblogs.com/yfrs/p/19425003/postman_inner_object
原文地址:https://mp.weixin.qq.com/s/EO5lJEskAWGq1DotIVx6Ig

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册