背景
使用webpagetest进行性能分析,需要一个一个url的去执行,需要人为去等,比较繁琐。而api很好的解决了这个问题,可以通过命令行等执行测试,也可以写成一个常规脚本,针对每个版本的常规url进行测试
 
 
安装webpagetest的npm包
 
npm install webpagetest -g
 
安装好后,可以用node.js引用webpagetest包来进行操作,也可以通过命令行直接操作。我这里使用的命令行进行操作
 
常用命令行操作
 
命令行格式:webpagetest [options] [command]
[options]包含-s、-h、-V等
 
1.webpagetest -help
查看webpagetest的api
 
2.webpagetest -s <server服务器地址> locations
查看当前已经连接到server的所有locations
 
3.webpagetest -s <server服务器地址> testers
返回server的所有locations,以及连接状态,"status": "OFFLINE"表示没有连接上
 
4.发送请求: webpagetest  -s <server服务器地址> test <url要测试的地址> -L <label标签> -l <locations>
实例:webpagetest  -s http://127.0.0.1 test "http://baidu.com" -L testlabel -l Android_Chrome
 
说明:url最好用双引号括起来,如果是简单的百度链接还好,如果url中有很多参数(参数里会包含?&;等字符),有可能会报错
 
返回结果如下:
{
  "statusCode": 200,
  "statusText": "Ok",
  "data": {
    "testId": "161026_0Z_2",
    "ownerKey": "0892939f735f030fc81e0bbf40db52ac838340b5",
    "jsonUrl": "http://127.0.0.1/jsonResult.php?test=161026_0Z_2",
    "xmlUrl": "http://127.0.0.1/xmlResult.php?test=161026_0Z_2",
    "userUrl": "http://127.0.0.1/results.php?test=161026_0Z_2",
    "summaryCSV": "http://127.0.0.1/csv.php?test=161026_0Z_2",
    "detailCSV": "http://127.0.0.1/csv.php?test=161026_0Z_2&amp;requests=1"
  }
 
返回的testId用来标识该条测试,可用来查询测试的状态、测试的结果等。api文档里所有<id>用的就是testId
jsonUrl等可以用来查询测试结果,测试执行结束后可以直接访问查询。
 
 
5.获得请求的状态:webpagetest  -s <server服务器地址>  status <testId> 
实例:webpagetest -s http://127.0.0.1  status 161026_0Z_2
查询出来该条测试是否完成,以及开始时间和结束时间等
 
6.获得请求结果:webpagetest  -s <server服务器地址>  results <testId> 
实例:webpagetest -s http://127.0.0.1  results 161026_0Z_2
返回了测试比较详细的结果,我还不太懂各项值,还是直接看网址的结果页面比较方便
 
7.获得历史天数内的结果:webpagetest  -s <server服务器地址> history <天数>
实例:webpagetest -s http://127.0.0.1 history 10
查询服务器下N天内的测试结果
 
返回结果如下:
[
  {
    "Date/Time": "10/26/16 03:22:10",
    "Location": "android-chrome_label - android",
    "Test ID": "161026_EZ_3",
    "URL": "http://www.zhuanzhuan.com",
    "Label": "testlabel"
  }
]
 
 
更多api可以参考下面链接:

使用命令行执行webpagetest进行测试的更多相关文章

  1. Pytest命令行执行测试

    Pytest命令行执行测试 from collections import namedtuple Task = namedtuple('Task', ['summary','owner','done' ...

  2. 命令行执行php脚本 中$argv和$argc

    在实际工作中有可能会碰到需要在nginx命令行执行php脚本的时候,当然你可以去配置一个conf用外网访问. 在nginx命令行中 使用 php index.php 就可以执行这个index.php脚 ...

  3. yii2 命令行执行php命令 commands(命令)

    YII2可以在命令行执行php命令,作为半路出家的撩妹君可谓是抠脚福音.作为一个屌丝级的程序员必须要有智能提示代码的IDE,比如PHPstorm.至于如何免费使用嘛..... 首先明白YII2自带的c ...

  4. 使用命令行执行jmeter的方法

    1. 简介 使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资 本文介绍windows下以命令行模式运行的方法. 1.1. 命令介绍 jmeter -n -t & ...

  5. JMeter 十二:命令行执行

    参考文档:http://jmeter.apache.org/usermanual/get-started.html#non_gui 真正开始跑压力测试时,我们就不能使用GUI模式了.这时候需要采用命令 ...

  6. 命令行执行php脚本中的$argv和$argc配置方法

    在实际工作中有可能会碰到需要在nginx命令行执行php脚本的时候,当然你可以去配置一个conf用外网访问. 在nginx命令行中 使用 php index.php 就可以执行这个index.php脚 ...

  7. Jmeter(6)命令行执行

    Jmeter执行方式有2种:GUI和非GUI模式 GUI:在Windows电脑上运行,图形化界面,可直接查看测试结果,但是消耗压力机资源较高 非GUI:通过命令行执行,无图形化界面,不方便查看测试结果 ...

  8. linux命令行执行db2存储过程

    存储过程代码如下: CREATE PROCEDURE proc_sum2(IN n INT,OUT sum INT,OUT j INT) BEGIN DECLARE i INT; ; ; ; WHIL ...

  9. mysql命令行执行外部文件

    mysql命令行执行外部文件

随机推荐

  1. OpenLayers 3 中Layers的相关知识

    昨天自己一遍又一遍的把API里Accessible map那个例子写下来,终于好像有熟悉一点点.找到一篇博文详细讲Layers的.整理一下贴出来(本来想在网上做笔记可以重新排版,比写在本子上要容易有结 ...

  2. 关于Oracle出现listener refused the connection with the ORA-12505错误,解决方案

    出现listener refused the connection with the ORA-12505错误,解决方案: 1.首先重启一下电脑,释放被占用的1521端口 2.重启后打开Oracle D ...

  3. Norflash控制器的Verilog建模之二(仿真)

    前言:经过几天修改,norflash控制器基本已经完成,通过仿真.完整的norflash包含2个模块:直接操作硬件的norflash_ctrl.v与控制ctrl模块的驱动norflash_driver ...

  4. MSSQL PIVOT 实现行列转置

    create table #temp ( ProdStep varchar(40), ModuleStatus varchar(40), Cnt int ); insert into #temp va ...

  5. qt 环境下mapx组件的鼠标跟踪

    经过两天的研究mapx组件人坐标转换还是没有转换成功,因为不管怎么变,定点转换的经纬度坐标始终与期望的值有较大的偏差.最后还是想老大请教了一下,划了半天功夫就研究出来了(不愧是老大,仰慕之情犹如滔滔江 ...

  6. JavaScript笔记:函数

    函数是定义一次但却可以调用或执行任意多次的代码块. 一.函数定义 javascript中的函数使用function关键字来定义,常用的函数定义分为三种形式: 声明式函数定义 function sum( ...

  7. 基础篇-spring包的下载

    首先去到String官网 往下拉一点会看到如下图所示点击进入下一步 进入以后找到如下图所示的 然后按照下图所示操作 选择你想要的版本点击它 选择spring的完整包下载如图

  8. c代码读取目录信息

    #include <stdio.h> #include <sys/types.h> #include <dirent.h> int main(void) { DIR ...

  9. js中js数组、对象与json之间的转换

    在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如:JSON字符串:var str1 = '{ &quo ...

  10. NHibernate系列文章二十三:NHibernate查询之Criteria查询(附程序下载)

    摘要 上一篇文章介绍了NHibernate HQL,他的缺点是不能够在编译时发现问题.如果数据库表结构有改动引起了实体关系映射的类有改动,要同时修改这些HQL字符串.这篇文章介绍NHibernate面 ...