2013-10-23 56 views
0

我目前正在用gatling寫一個測試模擬,並且我碰到了一堵磚牆。我的一個帖子請求有一個奇怪的要求。要求是:Gatling工具提取cookie數據

.post("/checkout/cart/add/product/form_key/") 

這個職位的要求與附加在URL的末尾形式鍵不會完整,形式密鑰存儲在一個名爲cookie的:CACHED_FRONT_FORM_KEY

我需要一種方法來搶從加特林cookiejar和cookie值在POST請求中使用如下:

.post("/checkout/cart/add/product/form_key/${FORM_KEY}") 

我做了一些谷歌上搜索,發現了類似的請求:

https://groups.google.com/forum/#!topic/gatling/gXosGVnUuZA

但我不確定如何實現這個模擬文件,我目前正在使用gatling 1.4.3。任何援助將不勝感激。

回答

0

您可以在Set-Cookie響應頭上使用regexHeader check以捕獲cookie值。

+0

那是完美的所有cookie,語法正常工作: –

+0

獲取一個cookie的值: .check(headerRegex(「Set-Cookie」,「CACHED_FRONT_FORM_KEY =(。*)」)。saveAs(「formkey」)) –

+0

如何從另一個exec()中訪問這個formkey? – Mayumi

0

沒有足夠的代表評論,所以我會添加另一個答案。

對於這個Magento的情況下,我需要的形式鍵,但使用headerRegex("Set-Cookie","CACHED_FRONT_FORM_KEY=(.*)").saveAs("formkey")會回到像

1Nt86VNYoPP5WUtt; path=/; domain=example.com

的值通過下面的正則表達式,我可以只提取1Nt86VNYoPP5WUtt

headerRegex("Set-Cookie","CACHED_FRONT_FORM_KEY=([^;]+)").saveAs("formkey")

然後我在我的HTTP Post中使用它像

http("add_to_cart") 
.post("/checkout/cart/add/product/12345") 
.formParam("form_key", "${formkey}") 
1

使用加特林2 API,您可以通過以下方式訪問餅乾:

.exec(session => { 
    import io.gatling.http.cookie._ 
    import org.asynchttpclient.uri._ 
    import io.netty.handler.codec.http.cookie.ClientCookieDecoder.LAX.decode 

    val cookies = session("gatling.http.cookies").as[CookieJar].get(Uri.create("https://www.someSite.com")) 
    // for (ck <- cookies) { 
    //  val cc = decode(ck.toString()) 
    //  println(s"${cc.name} === ${cc.value}"); 
    // } 

    val ck = cookies.filter(cookie => decode(cookie.toString()).name == "CookieName") 
    println(decode(ck.toString()).value) 

    session 
}) 

取消對迭代器來查看當前會話