2016-09-17 55 views
0

我想要使用JMeter中的BeanShell预处理器获取交易控制器的名称。 我想用它来连接并在以后使用头管理器在dynaTrace中显示。如何使用jmeter中的beanshell预处理器获取交易控制器的名称

我想是这样的使用BeanShell的听众

String test = sampleResult.getSampleLabel(); 
log.info(test); 

,但我想用预处理。

log.info(sampler.getName()); 

这是用来获取采样的名义,以同样的方式我想获得交易控制器的名称。

具体来说,我想使用BeanShell预处理器。

有人可以帮我吗?

+0

简短的回答:

Beanshell Transaction Controller Name

使用来自BeanShell的脚本JMeter的API的一些信息,你不能。 –

+0

感谢@KIril S ....如果不是beanshell预处理器,那么有没有什么办法可以获得事务名称.. – shey

+0

JMeter并没有给你任何好的方法来获取除当前元素之外的任何元素。你想达到什么目的?如果你解释目标是什么,或许可以找到解决方法 –

回答

4

你不能走得比Previous ResultPrevious Sampler更进一步,所以我会说明它不是你可以轻易实现的东西。看起来你的测试设计不是很好,因为通常人们不需要知道父采样器控制器的名称。您可以访问JMeter Test Plan Tree并从中找出信息。示例代码看起来像:

import org.apache.jmeter.control.TransactionController; 
import org.apache.jmeter.engine.StandardJMeterEngine; 
import org.apache.jorphan.collections.HashTree; 
import org.apache.jorphan.collections.SearchByClass; 

import java.lang.reflect.Field; 
import java.util.Collection; 

StandardJMeterEngine engine = ctx.getEngine(); 
Field test = engine.getClass().getDeclaredField("test"); 
test.setAccessible(true); 
HashTree testPlanTree = (HashTree) test.get(engine); 

SearchByClass txnCtrlSearch = new SearchByClass(TransactionController.class); 
testPlanTree.traverse(txnCtrlSearch); 
Collection txnControllers = txnCtrlSearch.getSearchResults(); 

for (Object txnController : txnControllers) { 
    log.info(((TransactionController) txnController).getName()); 
} 

演示:How to Use BeanShell: JMeter's Favorite Built-in Component

+0

嗨..感谢..对我来说工作得很好 – shey

+0

嗨@shey能否向我解释一下,您是如何在脚本中实现此代码以获取头管理器中的事务控制器名称的。 – vikas

相关问题