2016-08-19 101 views
0

承擔負載測試時,我遇到了需要使用動態變量(javax.faces.ViewState)的情況。XPath和正則表達式都不能在JMeter 3.0上工作

解決方案是使用XPath或正則表達式提取器。

他們都沒有工作(... & javax.faces.ViewState =%24%7Bvar1%7D):

enter image description here

enter image description here

變量的值I使用的

<input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="(.+?)"autocomplete="off" />

//input[@id='javax.faces.ViewState']/@value

來源:http://se7so.blogspot.com/2012/12/apache-jmeter-along-with-jsf-pages.html

UPDATE1:

所生成的參數由JSF:

enter image description here

UPDATE2

使用谷歌Chrome瀏覽器的控制檯:

enter image description here

我錯過了什麼?

+1

在您的第一個屏幕中,您在XPath提取器窗體中輸入正則表達式,對吧?將'//input[@id='javax.faces.ViewState']/@ value'放在XPath Extractor中,如果頁面上有這樣一個'input',它應該可以工作。 –

+1

您是否嘗試過使用[Regular Expression Extractor](http://jmeter.apache.org/usermanual/component_reference.html#Regular_Expression_Extractor)?看到響應數據也是有用的...... –

+0

@WiktorStribiżew,它沒有工作,我更新了問題。 $ {var1}仍然被誤解。 –

回答

1

嘗試在Regular Expression Extractor使用該正則表達式爲:

INPUT TYPE = 「隱藏」 名稱= 「javax.faces.ViewState」 ID = 「javax.faces.ViewState」 值=「(+。? )「

Here你可以看到它的工作。

2
  1. 對於需要轉義逗號,因爲他們還不如special characters進行處理,因此使用下面的正則表達式正則表達式:

    <input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="(.+?)" autocomplete="off" /> 
    

    演示:

    Regular Expression Extractor

  2. 對於XPath Extractor如果您的回覆不符合XML/XHTML標準,您可能需要檢查Use Tidy框以處理w ith「常規」HTML。

    Xpath Demo

順便說一句,你可以驗證你的常規,XPath的,CSS和抗住服務器響應JSONPath表達,而不必重新運行使用View Results Tree監聽測試,看看How to Debug your Apache JMeter Script瞭解詳情。

+0

問題是我總是得到URL?javax.faces.ViewState = $ {var1},而我提到了默認值」NOTFOUND「。 $ {var1}被視爲硬編碼值,而不是變量。 –

+0

JMeter變量是**局部**到線程組,如果您的目標是在不同的線程組中重複使用這個'ViewState'值,您需要通過[__setProperty()](https://將其轉換爲JMeter屬性jmeter.apache.org/usermanual/functions.html#__setProperty)函數。有關說明,請參閱[如何在不同線程組中使用變量](https://www.blazemeter.com/blog/knit-one-pearl-two-how-use-variables-different-thread-groups)文章 –