我有一个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'和正则表达式,但我无法弄清楚如何。任何建议都将不胜感激。
答案 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自定义函数(以及任何其他插件)的最简单方法是使用JMeter Plugins Manager
答案 2 :(得分:0)
我能够通过添加
替换字符串中的主机${__javaScript('${url}'.replace('www.website'\,'staging.website'))}
在第二个http请求采样器的路径输入中。 Selva和Dimitri提供的答案更优雅,所以如果我将来有时间回到这里,我会再试一次。我非常感谢你的帮助!