加特林。检查 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.
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.