我正在编写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
属性以正确的基数开头。
如何确认属性以某个子字符串开头?
答案 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
(文档并没有真正给出任何示例)。您可以使用 transform
和 is
。
可能看起来像这样:
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)。