2017-05-03 32 views
-2

我的場景是:我已經創建了一個對象,我必須爲該對象提供日誌。日誌包含10個ID,每個ID的狀態有runningfinished等。如何在JMeter中使用while控件讀取JSON提取器?

我想檢查每個ID的狀態,如果是finished則需要運行下一個採樣器;如果失敗,則退出循環。

我試圖while controller條件${__javaScript("${IDstatus}" !="FINISHED")}。循環永不退出,甚至狀態是finished

+1

能否請你分享的JSON對象的詳細信息? –

+0

我現在無法發佈截圖。但是我能夠達到你的要求。在使用'JSON Extractor'提取響應後,添加'For Each Controller'並輸入JSON提取器的'輸入變量','Start Index'爲'0'和'End Index'保留空白。在輸出變量名稱中輸入'returnVar'。現在,添加'如果控制器'並輸入條件'「$ {returnVar}」==「完成」'。在'如果控制器'放置您的請求。如果條件滿足,則將執行相應的採樣器,否則不執行。讓我知道這是否有助於你。同樣你也可以使用'JSR223 Sampler'來實現。 –

+0

感謝您的回答。您提出的解決方案似乎不起作用。它只是跳過整個foreach控制器。我在使用全局變量請求時,將foreach控制器保存在第二個線程組中 它與控制器一起工作正常,唯一的問題是它沒有讀取條件,並且在滿足條件的情況下繼續運行請求 是否可以運行foreach和如果控制器在一起?即使條件工作,如果把比賽號碼= 1在JSON提取。但我想檢查所有10個ID的狀態。 – userJmeter

回答

0

您的JSON響應包含finished字符串,並且您正在將其與FINISHED進行比較。在JavaScript字符串是區分大小寫所以x!= X

JavaScript String Comparison

所以,如果你改變你在控制條件

${__javaScript("${IDstatus}" !="finished")} 

你雖然控制器將開始按預期工作我的期望是。

參考文獻:

+0

所以這裏是設置。條件是$ {__ javaScript(「$ {Status}」!=「FINISHED」)}和json expr $ .. [0] .id匹配數字-1.Screen Shot 2017-05-04 at 10.23.02 AM。狀態字符串已完成 – userJmeter

+0

抱歉,exprs是$ .. [0] .status – userJmeter

相關問題