使用背景
之前在LS公司時瞬痘,產(chǎn)品有多端故慈,要走完一個完整的業(yè)務流程板熊,手動測試造數(shù)據(jù),總時很麻煩惯悠;
但是UI測試又不是那么的穩(wěn)定邻邮,維護起來效果也不太好;
所以呢克婶,通過jmeter接口實現(xiàn)業(yè)務流程的自動化了筒严,但是CRM并沒有前后端分離,那怎么通過接口來實現(xiàn)呢情萤,當時的處理方法鸭蛙,就是通過jmeter自身的代理,抓包后筋岛,處理下相應參數(shù)來銜接周邊系統(tǒng)娶视;
當然,因為要跨端睁宰,有些接口headers里面的Content-Type是不一樣的肪获,這樣的話,就要用多線程了柒傻,而且前后順序也是有規(guī)定的孝赫。
主題分享
今天要分享的就是,抓包的接口返回的結(jié)果是html時红符,怎么來截取自己想要的內(nèi)容
通過抓包的方式青柄,抓過來的接口,有些返回結(jié)果是html的预侯;一般簡單的致开,可以用jmeter自帶的正則表達式匹配出來;但是有些復雜的萎馅,甚至要同時取到返回結(jié)果的多個值時双戳,貌似就有點力不從心了。
還好jmeter提供了可以編寫java代碼的beanshell糜芳,可以通過后置處理器(BeanShell PostProcessor)來處理拣技,當時用到的代碼如下:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.*;
String respo= prev.getResponseDataAsString();
//System.out.println("響應結(jié)果是: " + repos);
Pattern p = Pattern.compile("data-id=\"(.+?)\"");
Matcher m = p.matcher(respo);
list = new ArrayList();
while(m.find()) {
list.add(m.group(1));
}
HashSet h = new HashSet(list);//去重
list.clear();
list.addAll(h);
//System.out.println(list);
int a=list.size();
//System.out.println(a);
Random random = new Random();
int b= random.nextInt(a);//隨機取
System.out.println(b);
vars.put("xuqid",list.get(b));