如何检查 Gatling/Scala 中是否存在属性

How to check if an attribute is present in Gatling/Scala

我认为这可能很容易做到,但我真的完全不懂 Scala。

我有一个场景,用户第一次登录会看到一个页面,然后如果他们再次登录,他们将看不到这个页面。所以到目前为止我想出的最好的是:

val chain = exec(
http("Login page")
  .get("/en/login")
  .headers(Config.HTML_HEADER)
).exec(
      http("login request")
        .post("/en/j_spring_security_check")
        .formParam("j_username", """${username}""")
        .formParam("j_password", """${password}""")
        .check(status.is(200))
        .check(currentLocationRegex(".*termsAndConditions").optional.saveAs("tc"))
    )
    .doIf(session => !session("tc").equals(null)) { // this doesn't work 
      exec(AgreeTermsAndConditions.chain)
  }

所以我在 doIf 上尝试了很多事情,目标是如果未设置会话 "tc" 就执行。有简单的方法吗?

正确阅读documentation${tc.exists()}

改用 Nil 检查。这个对我有用。

曾合作过:

.doIf(session => !session.contains("tc")) {
    ...
}

Gatling 提供了一个 exists() 内置 EL 函数(参见 Galting EL documentation),因此一个简洁的解决方案是:

.doIf("${tc.exists()}") {
 ...
}