用Jmeter中的站点地图替换$ {url}的一部分

时间:2017-02-13 21:31:54

标签: regex testing xpath jmeter

我有一个jmeter测试计划,它转到站点的sitemap.xml页面,使用XPath Extractor检索该页面上的每个url,然后将$ {url}传递给ForEach控制器中的HTTP Request采样器以发送结果每个页面到一个文件。这很好用,除了我刚刚意识到这个sitemap.xml页面上的链接是硬编码的。当我想测试https://staging-website.com时,这是一个问题,但sitemap.xml上的所有链接都是www.website.com页面。似乎必须有一种方法可以用'staging-website.com'替换每个$ {url}中的'www.website.com'和正则表达式,但我无法弄清楚如何。任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:0)

添加BeanShell预处理器来操作网址。

        String sUrl = vars.get("url");
        String sNewUrl = sUrl.replace("www.website.com", "https://staging-website.com");
        log.info("sNewUrl:" + sNewUrl);
        vars.put("url", sNewUrl);

您还可以尝试将sitemap.xml与位于www.website.com之前的正则表达式提取器关联起来,这样您只能提取数据的URL部分而不是完整的主机名。你不应该已经拥有它,因为HTTPSampler只允许你输入URI段而不是主机名吗?

答案 1 :(得分:0)

您可以使用__strReplace()项目提供的JMeter Plugins功能,例如:

${__strReplace(${url},${url},staging-website.com,)}

演示:

JMeter Replace String

安装JMeter自定义函数(以及任何其他插件)的最简单方法是使用JMeter Plugins Manager

JMeter Plugins Manager - Custom Functions

答案 2 :(得分:0)

我能够通过添加

替换字符串中的主机
${__javaScript('${url}'.replace('www.website'\,'staging.website'))} 

在第二个http请求采样器的路径输入中。 Selva和Dimitri提供的答案更优雅,所以如果我将来有时间回到这里,我会再试一次。我非常感谢你的帮助!