2017-02-13 11 views
1

У меня есть план тестирования jmeter, который идет на страницу сайта sitemap.xml сайта, извлекает каждый URL-адрес на этой странице с помощью XPath Extractor, а затем передает $ {url} в пробоотборщик запроса HTTP в контроллере ForEach для отправки результатов для каждой страницы в файл. Это отлично работает, но я просто понял, что ссылки на этой странице sitemap.xml жестко закодированы. Это проблема, когда я хочу проверить https://staging-website.com, но все ссылки на sitemap.xml - это все страницы www.website.com. Кажется, должен быть способ заменить «www.website.com» в каждом $ {url} на «staging-website.com» с регулярным выражением или что-то в этом роде, но я не смог понять, как это сделать. Любые предложения будут ценны.

ответ

0

Добавить предварительный процессор BeanShell для управления URL-адресом.

 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, а не имя хоста?

+0

Я новичок в JMeter, и я действительно не понимаю, где поставить предварительный процессор BeanShell, чтобы заменить его на каждом из URL, прежде чем тестировать их. Когда я ставлю его препроцессором для HTTP-запроса в контроллере ForEach, он не работает. Я пропустил шаг? – gallagher

+0

В соответствии с вашим описанием вы используете XPath Extractor для вытягивания URL-адреса. После того, как вы потянули его, вы отправите его в следующем пробоотборнике HTTP-запроса, чтобы получить содержимое этого URL-адреса, полученного из XPath Extractor. В этом втором HTTP-пробоотборнике вам нужно это сделать. – Selva

0

Вы можете использовать __strReplace() функцию, доступную через JMeter Plugins проекта, как:

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

Демо:

JMeter Replace String

Самый простой способ установить JMeter Пользовательские функции (а также любых других плагинов) является с использованием JMeter Plugins Manager

JMeter Plugins Manager - Custom Functions

0

я был в состоянии заменить узел в пределах строки, поставив

${__javaScript('${url}'.replace('www.website'\,'staging.website'))} 

на входе пути второго запроса HTTP пробоотборника. Ответы, представленные Селвой и Димитрием, были более изящными, поэтому, если у меня будет время в будущем вернуться к этому, я дам им еще одну попытку. Я очень ценю помощь!