Gatling-tool提取cookie数据

时间:2013-10-23 15:39:20

标签: scala cookies gatling

我正在用加特林编写一个测试模拟,我已经碰到了一堵砖墙。我的一个帖子请求有一个奇怪的要求。请求是:

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

此帖子请求不会在URL的末尾附加表单键完成,表单键存储在名为CACHED_FRONT_FORM_KEY

的cookie中

我需要一种方法从gatling cookiejar中获取该cookie中的值,并在post请求中使用,如下所示:

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

我做了一些谷歌搜索并发现了类似的请求:

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

但我不确定如何将其实现到模拟文件中,我目前正在使用gatling 1.4.3。非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

使用Gatling 2 API,您可以按如下方式访问Cookie:

.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
})

取消注释迭代器以查看当前会话中的所有cookie

答案 1 :(得分:0)

您可以在Set-Cookie响应标头上使用regexHeader check来捕获Cookie值。

答案 2 :(得分: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}")

答案 3 :(得分:0)

使用HTTP Helper getCookieValue是另一种获取Cookie数据的方法:

// add cookie to the session as CACHED_FRONT_FORM_KEY
.exec(getCookieValue(CookieKey("CACHED_FRONT_FORM_KEY"))) 
.exec { session =>
  println(session("CACHED_FRONT_FORM_KEY").as[String]) // `.as[]` unwraps the value from the session object
  session
}
.post("/checkout/cart/add/product/form_key/${CACHED_FRONT_FORM_KEY}")

来源