[英]How to convert json file to jmx file (jmeter) using java code?
[英]How to add regex extractor and cookie managers in Jmeter .jmx file using Java code?
我正在使用Java代码编写Jmeter GUI的.jmx文件。 我想从用于“登录”的HTTP代理采样器中提取GET响应,该响应用作识别用户的会话ID。 而且,我需要下一个采样器来使用要提取的变量。 另外,我还需要每个线程组的cookie管理器。
我应该调用哪个API将提取器添加到http代理采样器,然后将cookie管理器添加到线程组?
我已经创建了http sampler,设置了路径并设置了参数。 现在我需要的是一个提取程序来帮助我获取变量和一个cookie管理器
下面是我在创建线程组并将http sampler添加到线程组中的代码
HashTree testPlanTree = new ListedHashTree();
TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code");
testPlanTree.add(testPlan);
HTTPSamplerProxy newSampler = null;
LoopController loopController;
ThreadGroup threadGroup = null;
HashTree threadGroupHashTree = null;
int i = 1; // exclude the first empty call
for (ArrayList<String> elementList : calls) {
if (elementList.size() == 3) {
System.out.println(elementList);
loopController = new LoopController();
loopController.setLoops(1);
loopController.setFirst(true);
loopController.setProperty(TestElement.TEST_CLASS, LoopController.class.getName());
loopController.setProperty(TestElement.GUI_CLASS, LoopControlPanel.class.getName());
loopController.initialize();
threadGroup = new ThreadGroup();
threadGroup.setName(elementList.get(1) + "_" + elementList.get(2));
threadGroup.setNumThreads(1);
threadGroup.setRampUp(1);
threadGroup.setSamplerController(loopController);
threadGroup.setProperty(TestElement.TEST_CLASS, ThreadGroup.class.getName());
threadGroup.setProperty(TestElement.GUI_CLASS, ThreadGroupGui.class.getName());
testPlan.setProperty(TestElement.TEST_CLASS, TestPlan.class.getName());
testPlan.setProperty(TestElement.GUI_CLASS, TestPlanGui.class.getName());
testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel().createTestElement());
threadGroupHashTree = testPlanTree.add(testPlan, threadGroup);
}
else {
newSampler = new HTTPSamplerProxy();
LinkedHashMap<String, ArrayList<String>> arguments = httpSamplerList.get(i);
if (elementList.get(0).equals("Login")) {
newSampler.setMethod(arguments.get("HTTPSampler.method").get(0));
newSampler.add
}
else if (elementList.get(0).equals("Logout"))
newSampler.setMethod(arguments.get("HTTPSampler.method").get(0));
else
newSampler.setMethod(elementList.get(0));
System.out.println(httpSamplerList.get(i));
newSampler.setPort(8080);
newSampler.setPath(arguments.get("HTTPSampler.path").get(0));
newSampler.setName(elementList.get(0)); // currently use a integer number naming as test
newSampler.setProperty(TestElement.TEST_CLASS, HTTPSamplerProxy.class.getName());
newSampler.setProperty(TestElement.GUI_CLASS, HttpTestSampleGui.class.getName());
// Set up arguments
if (arguments.get("arguments").size() > 0) {
if (arguments.get("HTTPSampler.method").get(0).equals("GET")) {
for (int j = 0; j < arguments.get("arguments").size(); j=j+2) {
newSampler.addArgument(arguments.get("arguments").get(j), arguments.get("arguments").get(j+1));
}
}
else if (arguments.get("HTTPSampler.method").get(0).equals("POST")||arguments.get("HTTPSampler.method").get(0).equals("PUT")) {
newSampler.addNonEncodedArgument("",arguments.get("arguments").get(0) , "");
newSampler.setPostBodyRaw(true);
}
}
threadGroupHashTree.add(newSampler);
i++;
}
}
CookieManager cookieManager = new CookieManager(); cookieManager.setName("HTTP Cookie Manager"); cookieManager.setProperty(TestElement.TEST_CLASS, CookieManager.class.getName()); cookieManager.setProperty(TestElement.GUI_CLASS, CookiePanel.class.getName());
RegexExtractor regexExtractor = new RegexExtractor(); regexExtractor.setName("Regular Expression Extractor"); regexExtractor.setProperty("RegexExtractor.useHeaders", "false"); regexExtractor.setProperty("RegexExtractor.refname", "yourVariable"); regexExtractor.setProperty("RegexExtractor.regex", "yourRegex"); regexExtractor.setProperty("RegexExtractor.template", "yourTemplate"); regexExtractor.setProperty("RegexExtractor.match_number", "yourMatchNumber"); regexExtractor.setProperty("RegexExtractor.default", "yourDefaultValue"); regexExtractor.setProperty(TestElement.TEST_CLASS, RegexExtractor.class.getName()); regexExtractor.setProperty(TestElement.GUI_CLASS, RegexExtractorGui.class.getName());
查看不使用JMeter GUI即可启动JMeter测试的五种方法,以了解有关运行JMeter测试的不同选项的更多信息,包括以编程方式创建测试计划。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.