user1
December 2, 2021, 12:33pm
1
Hi All.
How I can extract part of requests header - RequestVerificationToken. There is my code
importio.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.core.structure.ChainBuilder
object MainPage {
val headers_0 = Map(
…
)
val OpenMainPage: ChainBuilder = exec {
http("/")
.get("/")
.headers(headers_0)
.check(headerRegex(“Cookie”, “RequestVerificationToken=([a-zA-z0-9_-]+)”).saveAs(“requestVerificationToken”))}
.exec(session => session.set(“requestVerificationToken”, session(“requestVerificationToken”).as[String]))
)
When I run my simulation I get next error message - “[ERROR] i.g.c.a.b.SessionHookBuilder$$anon$1 - ‘hook-4’ crashed with ‘j.u.NoSuchElementException: No attribute named ‘requestVerificationToken’ is defined’, forwarding to the next one”
sbrevet
December 2, 2021, 12:48pm
2
Hi,
Are you sure your check is correct?
Try to add an exitHereIfFailed
between both exec
.
I guess that regex matches the whole header.
val OpenMainPage: ChainBuilder = exec {
http("/")
.get("/")
.headers(headers_0)
.check(headerRegex("Cookie", ".*RequestVerificationToken=([a-zA-z0-9_-]+).*").saveAs("requestVerificationToken"))}
Hope this helps,
Cheers!
user1
December 2, 2021, 12:52pm
3
I checked my regex. The test shows that everything is working correctly.
четверг, 2 декабря 2021 г. в 15:48:29 UTC+3, sbr...@gatling.io :
First, checks are applied on responses, not requests. You’re the one crafting the requests.
Then, Gatling automatically deals with sending the Cookie headers to the server, as long as you’ve properly populated the CookieJar:
either automatically with the responses containing a Set-Cookie header,
or manually with addCookie.
Now, you have to figure out where this Cookie comes from in your actual application? Is it set by the server, or by the client with JavaScript?