2017-10-13 293 views
1

我見過很多例子,但似乎沒有任何工作。如何訪問beanshell中的cookie管理器?

這是我的設置:

enter image description here

我使用一個foreach循環通過我的變量和有Cookie管理器使用它們: enter image description here

我想BeanShell的清除每個循環中的cookie管理器中的cookie,以便他們從我的變量中重新添加,但我似乎無法訪問它。

我試過如下:

import org.apache.jmeter.protocol.http.control.Cookie; 
import org.apache.jmeter.protocol.http.control.CookieManager; 

manager = sampler.getCookieManager(); 

這給了我這個錯誤:

Attempt to resolve method: getCookieManager() on undefined variable or class name: sampler 

我試着這樣做:

CookieManager cManager = ctx.getCurrentSampler().getCookieManager(); 

但是,這給了我這個錯誤:

Typed variable declaration : Error in method invocation: Method getCookieManager() not found in class'org.apache.jmeter.protocol.java.sampler.BeanShellSampler' 

編輯: 因此,作爲每一個建議的解決方案,我想這:

enter image description here

然後將此:

enter image description here

但是,這給了我這個錯誤:

2017/10/13 12:26:31 ERROR - jmeter.extractor.JSR223PostProcessor: Problem in JSR223 script JSR223 PostProcessor javax.script.ScriptException: java.lang.NullPointerException: Cannot invoke method clear() on null object 
+0

什麼修復了你的問題?升級到3.3? – user7294900

回答

2

由於Performa不要使用Beanshell它將在未來的版本中被刪除。

  • 第一HTTP請求添加JSR223 PreProcessor
  • 選擇Groovy的
  • 檢查 「緩存編譯腳本(如果可用)」
  • 添加以下代碼:

import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.control.Cookie; CookieManager cm = sampler.getCookieManager(); cm.clear();

這是它應該看起來像

enter image description here

+0

如果我這樣做,當我打電話清除我得到:「無法調用方法清空()空對象」 – red888

+0

你使用了一個職位,我需要一個預處理器 –

+0

後處理器拋出相同的錯誤更新顯示後處理器不工作 – red888

1

你需要採取的Cookie從JMeter的背景下管理:

CookieManager cm= ctx.getCurrentSampler().getCookieManager(); 

目前您從sampler這是無關緊要得到它。