JMeter 从 java 中的测试计划中获取特定节点
JMeter get specific node from testplan in java
在我的 JMeter 测试文件中,我有多个用户定义的变量节点,我想在特定情况下激活或停用它们。
因此,我需要将它们作为 Java 中的 JMeterTreeNode 对象获取。所以而不是 treeModel.getRoot();我想要 treeModel.getNodeByName() 这样的东西,这样我的代码就可以看起来像这样:
JMeterTreeModel treeModel = new JMeterTreeModel(new Object());
JMeterTreeNode variablesNode= (JMeterTreeNode) treeModel.getNodeByName("jmeterNodeNameOrId");
if (true)
{
variablesNode.setEnabled(true);
}
您将无法在运行时“停用”“节点”
此外 User Defined Variables 在任何 JSR223 测试元素之前被处理,因此在您的代码开始执行之前很久就会“激活”它们。
Note that all the UDV elements in a test plan - no matter where they are - are processed at the start.
“停用”节点的唯一方法是在测试开始前将其禁用,我能想到的最方便的方法是 Taurus 自动化框架,其中:
有 JMeter enhancements 可在运行时添加 disabled/enable 功能,您可以投票或贡献。
Bug 65702 - Add field disabled on all component
Add option to disable View Results Tree/Listeners
所以,我找到了一个可行的解决方案。 Dmitris 的回答让我看了一下 jmx 作为 xml。 UserDefinedVariables 是一个“参数”节点。
所以首先我必须得到参数部分
SearchByClass searcher = new SearchByClass(Arguments.class);
testPlanTree.traverse(searcher); //testPlanTree is a param
Object[] o = searcher.getSearchResults().toArray();
return o[0] //just the first one
在另一种方法中,我可以像这样使用它
JMeterTreeModel treeModel = new JMeterTreeModel(new Object());
JMeterTreeNode root = (JMeterTreeNode) treeModel.getRoot();
treeModel.addSubTree(testPlanTree, root);
JMeterTreeNode argumentNode = treeModel.getNodeOf(getArgumentsMethodFromAbove(testPlanTree));
String vars = argumentNode.getTestElement().getName();
然后你可以做
if (vars.equals("foo"))
{
argumentNode.setEnabled(false);
}
在我的 JMeter 测试文件中,我有多个用户定义的变量节点,我想在特定情况下激活或停用它们。 因此,我需要将它们作为 Java 中的 JMeterTreeNode 对象获取。所以而不是 treeModel.getRoot();我想要 treeModel.getNodeByName() 这样的东西,这样我的代码就可以看起来像这样:
JMeterTreeModel treeModel = new JMeterTreeModel(new Object());
JMeterTreeNode variablesNode= (JMeterTreeNode) treeModel.getNodeByName("jmeterNodeNameOrId");
if (true)
{
variablesNode.setEnabled(true);
}
您将无法在运行时“停用”“节点”
此外 User Defined Variables 在任何 JSR223 测试元素之前被处理,因此在您的代码开始执行之前很久就会“激活”它们。
Note that all the UDV elements in a test plan - no matter where they are - are processed at the start.
“停用”节点的唯一方法是在测试开始前将其禁用,我能想到的最方便的方法是 Taurus 自动化框架,其中:
有 JMeter enhancements 可在运行时添加 disabled/enable 功能,您可以投票或贡献。
Bug 65702 - Add field disabled on all component
Add option to disable View Results Tree/Listeners
所以,我找到了一个可行的解决方案。 Dmitris 的回答让我看了一下 jmx 作为 xml。 UserDefinedVariables 是一个“参数”节点。
所以首先我必须得到参数部分
SearchByClass searcher = new SearchByClass(Arguments.class);
testPlanTree.traverse(searcher); //testPlanTree is a param
Object[] o = searcher.getSearchResults().toArray();
return o[0] //just the first one
在另一种方法中,我可以像这样使用它
JMeterTreeModel treeModel = new JMeterTreeModel(new Object());
JMeterTreeNode root = (JMeterTreeNode) treeModel.getRoot();
treeModel.addSubTree(testPlanTree, root);
JMeterTreeNode argumentNode = treeModel.getNodeOf(getArgumentsMethodFromAbove(testPlanTree));
String vars = argumentNode.getTestElement().getName();
然后你可以做
if (vars.equals("foo"))
{
argumentNode.setEnabled(false);
}