在gatling中,如何验证通过css检查提取的字符串的值?

时间:2018-04-13 20:46:33

标签: css scala gatling

我正在编写Gatling模拟,我想验证某个元素是否存在,以及其中一个属性的内容是以某个子字符串开头的。 E.g:

val scn: ScenarioBuilder = scenario("BasicSimulation")
  .exec(http("request_1")
  .get("/path/to/resource")
  .check(
    status.is(200),
    css("form#name", "action").ofType[String].startsWith(BASE_URL).saveAs("next_url")))

现在,当我在上面添加startsWith时,编译器会报告一个错误startsWith is not a member of io.gatling.http.check.body.HttpBodyCssCheckBuilder[String]。如果我离开startsWith,那么一切正常。我知道预期的表单元素是那里,但我不能确认它的@action属性以正确的基数开头。

如何确认属性以某个子字符串开头?

2 个答案:

答案 0 :(得分:0)

请参阅此https://gatling.io/docs/2.3/general/scenario/

我已经从那里复制了下面的内容,但它是一个会话功能,并且将如下所示: -

doIf(session => session("myKey").as[String].startsWith("admin")) {  // executed if the session value stored in "myKey" starts with "admin"  exec(http("if true").get("..."))}

答案 1 :(得分:0)

我刚刚遇到了同样的问题。我想一种选择是使用验证器,但我不确定您是否可以动态声明一个验证器来验证您的 BASE_URL(文档并没有真正给出任何示例)。您可以使用 transformis

可能看起来像这样:

css("form#name", "action").transform(_.startsWith(BASE_URL)).is(true)

如果您还想一次性包含 saveAs 调用,您可能还可以执行以下操作:

css("form#name", "action").transform(_.substring(0, BASE_URL.length)).is(BASE_URL).saveAs

但这更难阅读。另外我不确定当子字符串抛出异常时会发生什么(比如 IndexOutOfBounds)。