11:BeanShell
一:BeanShell运行顺序
1.1前置和后置处理器Pre和Post
变量定义:
vars:put,get方法 //put获取已定义的变量给外部使用 get获取外部变量
vars.put("name1",name); vars.get("src_${num}")
log:日志 log.info()
prev:获取响应数据
ctx:获取请求/响应数据
props:获取jmeter变量--Debug Sampler

1.2:实例
String name="lijia";
log.info(name);
//put获取已定义的变量外部使用
vars.put("name1",name);
//put定义变量外部使用
vars.put("name2","ssss");
//获取外部---定义code变量
String code=vars.get("code");
log.info("..............");
log.info(code);
//主动抛出异常
log.error("出错了");
1.3:处理时间戳
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
try{
Date date =new Date(); //获取当前时间
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//自定义时间的格式
//获取当前时间
String nowDate = sf.format(date);
log.info("---------今天的日期是----"+nowDate);
Calendar cal = Calendar.getInstance();
cal.setTime(sf.parse(nowDate));
//获取后推30天的时间
cal.add(Calendar.DAY_OF_YEAR,+30);
String SecondDate = sf.format(cal.getTime());
log.info("---------往后推30天的日期是----"+SecondDate);
vars.put("started",nowDate);
vars.put("ended",SecondDate);
}
catch(Exception e){
}

二:beanshell爬虫
1:爬取文件/图片保存在本地(xpath提取图片地址:src和对应的图片名称alt,遍历beanshell后置处理到指定新建的文件目录)
保存图片
import java.io.*;
byte[] result=prev.getResponseData();
//D盘先新建images文件,alt为xpath循环提取的名字
String file_name="D:\\\images\\\_${alt}.jpg";
File file=new File(file_name);
FileOutputStream out=new FileOutputStream(file);
out.write(result);
out.close();
BeanShell PostProcessor内容如下

2:保存图片的URL地址
//保存图片网址--必须先创建D盘images文件
FileWriter fstream=new FileWriter("D:\\\images\\\name.txt",true);//true是追加,false代表覆盖--只会保留最后一条
BufferedWriter out=new BufferedWriter(fstream);
out.write("http://123.56.170.43:8088"+vars.get("src_${num}"));
out.write(System.getProperty("line.separator"));
out.close();
fstream.close();

三:beanshell实现unicode转中文
1:没有beanshell转码

2:beanshell转码后

3:beanshell postProcessor中的代码如下
//获得响应数据-字符串
String samplerData=prev.getResponseDataAsString();
log.info(samplerData);
String threadName = prev.getThreadName();
log.info(threadName);

2:ctx---获取请求/响应数据
import org.apache.jmeter.samplers.SampleResult;
SampleResult result=ctx.getPreviousResult();
String str_Response=result.getResponseDataAsString();//获取响应数据
log.info(str_Response);
String str_request_headers=result.getRequestHeaders();//获取请求头
log.info(str_request_headers);
String str_response_code=result.getResponseCode();//获取响应代码
log.info(str_response_code);

3:props:获取jmeter变量--Debug Sampler vars 中的变量仅对当前线程组内可见,props跨线程组则需要使用属性
cookie=props.get("START.HMS");
props.put("usernam","lijia");//外部调用有问题
a=props.get("usernam");
log.info(a);
log.info(cookie);


浙公网安备 33010602011771号