LoadRunner一个Transaction中包含重定向的问题

在用户登录或者访问受限资源时候,往往会遇到重定向,在这种情况下,LoadRunner的一个Trasaction会包括两个甚至多个请求,如何拆分呢?

使用如下配置(LR12.5提供了JS的方式写Web-HTTP/HTML脚本了,妈妈再也不用担心我得一看C就会吐的病了):
web.setOption("MaxRedirectionDepth", "0");


然后写一个循环
lr.saveString('http//redirect.com','location');
	var httpResult ="";
	var i = 0;
web.setOption("MaxRedirectionDepth", "0", "LAST");
	do {
		lr.message("Start---->");
	

		web.regSaveParamEx({
			paramName : 'httpCode',
			lb : 'HTTP/1.1 ',
			rb : ' ',
			notFound : 'warning',
			scope : 'Headers'
		});
		web.regSaveParamEx({
			paramName : 'location',
			lb : 'Location: ',
			rb : '\r\n',
			notFound : 'warning',
			scope : 'Headers'
		});
		var transactionName ='tt'+i;
		lr.message(transactionName);
		lr.startTransaction(transactionName);
		lr.message("Visiting URL: " + reqURL);
		web.url({
			name : 'idm' + i,
			url : '{location}',
			recContentType : 'text/html'
		});
		lr.message("Redirect URL is: " + lr.evalString("{location}"));
		httpResult = lr.evalString("{httpCode}");
		lr.endTransaction(transactionName, lr.AUTO)
		i++;
		lr.message("END<----");
	} while (httpResult == "302");



原理就是一旦发现HTTP response code 是302,就去解析response header,找出要跳转的地方保存下来,循环去做就可以了。

另外 使用如下API可以直接获取上一次HTTP请求的返回code,不用每次都去匹配解析一下:
web.getIntProperty(web.HTTP_INFO_RETURN_CODE);


再另外, LR12.5对JS代码: web.setOption("MaxRedirectionDepth", "0")的解析是有问题,昨天刚询问了LR Team,是一个JS的支持上的问题,JS只是外面一层皮,里面的实现实际上还是调用的C的东西,结果在实现这个API的时候出现了BUG。

在API实现上仅支持了
web.setOption("MaxRedirectionDepth", "0","LAST")这种方式。

猜你喜欢

转载自wwwcomy.iteye.com/blog/2255889