2017-02-13 17 views
1

我有一個JMeter測試計劃,都到了網站的頁面的sitemap.xml,從一個網站地圖更換的$ {URL}的部分取回使用XPath提取該網頁上的每一個URL,然後通過$ {URL}發送到ForEach控制器內的HTTP請求採樣器,以將每個頁面的結果發送到文件。這很好,除非我意識到這個sitemap.xml頁面上的鏈接是硬編碼的。當我想測試https://staging-website.com時,這是一個問題,但sitemap.xml上的所有鏈接都是www.website.com頁面。似乎必須有一種方法可以用正則表達式或其他東西來替換每個$ {url}中的「www.website.com」和「staging-website.com」,但我一直無法弄清楚。任何建議將不勝感激。在JMeter中

回答

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的,以便替換。當我把它作爲ForEach控制器中HTTP請求的預處理器時,它不起作用。我錯過了一步嗎? – gallagher

+0

根據您的描述,您正在使用XPath提取器來提取URL。一旦您將其提交,您將在下一個HTTP請求採樣器中提交它,以獲取從XPath Extractor獲取的URL的內容。在第二個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請求採樣器的路徑輸入到替換的字符串內的主機。塞爾瓦和迪米特里提供的答案更加優雅,所以如果我有時間回到這個問題,我會再給他們一次嘗試。我非常感謝幫助!