繁体   English   中英

如何使用Java代码在Jmeter .jmx文件中添加正则表达式提取器和cookie管理器?

[英]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++;
            }
        }
  1. HTTP Cookie管理器

     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()); 
  2. 正则表达式提取器

     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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM