2011-09-23 131 views
1

我目前正在與JMeter合作,以便在發佈之前對我們的系統之一進行壓力測試。通過這個,我需要模擬用戶點擊呈現給他們的網頁上的鏈接。我決定使用XPath後處理器來提取這些鏈接。JMeter中的XPath查詢

這裏是我的問題:

我有一個XPath表達式看起來是這樣的:

//div[@data-attrib="foo"]//a//@href 

不過,我需要提取特定子爲每個線程(用戶)。我想要做這樣的事情:

//div[@data-attrib="foo"]//a[position()=n]//@href 

(n爲當前索引)

我的問題:

有沒有辦法讓這個查詢工作,讓我能爲每個線程提取表達式的新索引?

另外,正如我所提到的,我使用JMeter。 JMeter爲XPath查詢的每個結果節點創建一個變量。但是它將它們命名爲「VarName_n」,並不將它們存儲爲傳統數組。有沒有人知道我可以動態地選擇其中一個變量,如果可能的話?這也可以解決我的問題。

感謝提前:)

編輯:

嵌套變量顯然是不支持的,所以爲了動態指的是名爲「VarName_1」,VarName_2" 等變量,這可能是使用:

${__BeanShell(vars.get("VarName_${n}"))} 

其中 「n」 是一個整數所以如果n == 1,這會得到一個名爲 「VarName_1」 變量的值

如果「。 n「整數在單個線程中更改,ForEach控制器專門爲此目的而設計。

回答

1

對於第一個問題 - 使用

(//div[@data-attrib="foo"]//a)[position()=$n]/@href 

其中$ n必須與特定的整數取代。

這裏我們還假定//div[@data-attrib="foo"]選擇單個div元素。

請注意,XPath的僞操作//通常會導致非常慢的評估(一個完整的子樹搜索),並在其他混亂的問題(這就是爲什麼在上述表達式中需要括號)。

無論何時文檔的結構已知並且可以指定完整的具體路徑,建議避免使用//

至於第二個問題,目前尚不清楚。請舉個例子。

+0

非常感謝!我剛剛開始使用JMeter,並且我的XPath體驗幾乎不存在。但是感謝您爲我清理XPath特定部分。至於JMeter的具體問題,我同時找到了解決方案 - 我也會將它作爲答案發布。 – user940429