簡體   English   中英

Jmeter將Cookie傳遞到了不同的線程組,但仍然收到[沒有cookie]的請求

[英]Jmeter passed cookies to different thread group but still get requests with [no cookies]

我有一個問題,我在這里看到很多各種各樣的問題和答案,但是到目前為止,對我來說沒有任何幫助。

請仔細閱讀它,以確保它不是重復的帖子

我正在使用2個正在使用cookie的線程組。 由於未在線程組之間共享cookie,因此我使用該方法將其“導出”到屬性中,並使用CookieManager的coookie類將其“導入”到2ns線程組中。 我在第一個和第二個線程組上放置了相同的http請求。 顯然,它可以在第一個上使用,但是在第二個上,我看到它使用了[no cookies]

測試結構如下:

 HTTP Cookie Manager Thread A - 1 thread, 1 loop - Login page - Beanshell PostProcessor props.put("ASPXAUTH_Cookie","${COOKIE_.ASPXAUTH}"); props.put("ASP.NET_SessionId_Cookie","${COOKIE_ASP.NET_SessionId}"); - Page X to hit - success Thread B - 6 thread, 1 loop - Login page - Beanshell Prerocessor import org.apache.jmeter.protocol.http.control.CookieManager; import org.apache.jmeter.protocol.http.control.Cookie; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; HTTPSamplerProxy sampler = ctx.getCurrentSampler(); CookieManager manager = sampler.getCookieManager(); Cookie cookie1 = new Cookie(".ASPXAUTH",props.get("ASPXAUTH_Cookie"),"","/",false,0); manager.add(cookie1); Cookie cookie2 = new Cookie("ASP.NET_SessionId",props.get("ASP.NET_SessionId_Cookie"),"","/",false,0); manager.add(cookie2); - Same Page X to hit - failure 

第X頁的初步結果:

 GET http://Mysite/pages/MyView.aspx?subRoute=views&pageid=7168&routeName=dashboards Cookie Data: .ASPXAUTH=9CB09DD7A906ED67027E9B1ED71C707A498B8234C737169AA3EF1164890A217D9CCD1F1B32736338A7DFBF3DE0A07AD45F170A0F11FE49C827581C584577372D2D3C7D4F52DE1B73D3DE9A1263150B85F302DD01B9CF93AF380F5C63F618634CEEB5C3CFD95F1081EC28F5A556B21EAA; ASP.NET_SessionId=rg4dxqm1xai4wovvfvyezggo Request Headers: Connection: keep-alive X-DevTools-Emulate-Network-Conditions-Client-Id: 08a74297-b666-496a-a1cb-620054bc5db5 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Referer: http://Mysite/pages/ui/ Accept-Encoding: gzip, deflate, sdch Accept-Language: he-IL,he;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2 Host: load-rec-8 

頁面X的第二個結果(在第二個線程組中):

 GET http://Mysite/pages/MyView.aspx?subRoute=views&pageid=7168&routeName=dashboards [no cookies] Request Headers: Connection: keep-alive X-DevTools-Emulate-Network-Conditions-Client-Id: 08a74297-b666-496a-a1cb-620054bc5db5 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Referer: http://Mysite/pages/ Accept-Encoding: gzip, deflate, sdch Accept-Language: he-IL,he;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2 Host: load-rec-8 

請不要回答“不要使用不同的線程組”,因為我只需要使用1個登錄名(第一個線程組),而第二個線程組應同時為6個用戶並行運行相同的請求。

無論我用很多其他有關此主題的帖子進行的測試均無效。

有什么想法嗎?

您的問題很可能是您在創建新的Cookie實例時未提供“域”,您需要傳遞與您的測試位置下的應用程序匹配的域( HTTP中 “服務器名稱或IP”部分中的內容) 請求采樣器),即,如果您正在對http://example.com域進行負載測試,則在通過Beanshell創建cookie時提供.example.com

通常,給定您復制cookie的名稱和值,您還可以復制所有剩余的屬性。 有關示例代碼,請參見如何使用BeanShell:JMeter的最喜歡的內置組件

其他增強功能:

  1. ${COOKIE_.ASPXAUTH}替換${COOKIE_.ASPXAUTH} vars.get("COOKIE_.ASPXAUTH") ;
  2. 下面的行可以刪除,不是必需的,Beanshell PreProcessor已經具有sampler預定義的變量

     import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy; HTTPSamplerProxy sampler = ctx.getCurrentSampler(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM