加特林。检查 HTML 结果是否包含一些字符串

Gatling. Check, if a HTML result contains some string

Programming Gatling 性能测试 我需要检查从服务器返回的 HTML 是否包含预定义的字符串。确实如此,以错误中断测试。

我没弄明白怎么做。一定是这样的:

  val scn = scenario("CheckAccess")
    .exec(http("request_0")
      .get("/")
      .headers(headers_0)
      .check(css("h1").contains("Access denied")).breakOnFailure()
      )

我将想要的功能命名为 "contains" 和 "breakOnFailure"。加特林机有类似的东西吗?

你可以写得非常简单,比如:

.check(css("h1", "Access denied").notExists)

如果您不确定 H1,您可以使用:

.check(substring("Access denied").notExists)    

IMO 服务器应该以正确的状态响应,因此:

.check(status.not(403))

欣赏并查看http://gatling.io/docs/2.1.7/http/http_check.html了解详情

编辑: 我对 CSS 选择器的使用是错误的,请参阅使用 CSS 的 Stephane Landelle 解决方案。 我大部分时间都在使用子字符串方式:)

这是解决方案

.check(css("h1").transform((s: String) => s.indexOf("Access denied"))
.greaterThan(-1)).exitHereIfFailed

更好的解决方案:

使用一个 CSS 选择器:

.check(css("h1:contains('Access denied')").notExists)

子串:

.check(substring("Access denied").notExists)

注意:如果您要查找的内容仅出现在响应负载中的一个位置,子字符串肯定更有效,因为它不必将其解析为 DOM.