Scala对我来说是很新的,我一离开门式dsl就会有问题。
在我的例子中,我调用了一个API (Mailhog),它用大量的json格式的邮件来响应。我不能攫取所有的价值。我需要它与“jsonPath”,我需要“正则”以及。这将导致一个映射和一个列表,我需要迭代并保存每个值。
.check(jsonPath("$[*]").ofType[Map[String,Any]].findAll.saveAs("id_map"))
.check(regex("href=3D\\\\\"(.*?)\\\\\"").findAll.saveAs("url_list"))
一开始,我想循环“检查”,但没有找到任何可以重复的“get”-request。所以这是一张地图和一张清单。
1)我需要映射的每个值,并且能够用下面的foreach循环来解决这个问题。
.foreach("${id_map}", "idx") {
exec(session => {
val idMap = session("idx").as[Map[String,Any]]
val ID = idMap("ID")
session.set("ID", ID)
})
.exec(http("Test")
.get("/{ID}"))
})}
( 2)我需要清单上的每三个值,并对它们提出一个索取请求。在我这样做之前,我需要替换字符串的一部分。在检查字符串时,我试图替换它们的部分。但是它不适用于findAll。
.check(regex("href=3D\\\\\"(.*?)\\\\\"").findAll.transform(raw => raw.replace("""=\r\n""","")).saveAs("url"))
如何替换列表中每个字符串的一部分?另外,我怎样才能对列表中的每三个元素提出一个get请求。
我不能让它在上面同样的预见结构下工作。
发布于 2017-10-30 06:42:22
我是abole自己解决这个问题的。一开始我对支票做了一点改动(regex.)部分。
.check(regex("href=3D\\\\\"(.*?)\\\\\"").findAll.transform(_.map(raw => raw.replace("""=\r\n""",""))).saveAs("url_list"))
然后,我只想在列表的第三个元素上发出一个Get请求(因为我提取的URL在每个邮件中出现了三次)。
.exec(session => {
val url_list =
session("url_list").as[List[Any]].grouped(3).map(_.head).toList
session.set("url_list", url_list)
})
最后,我用一个foreach-循环迭代我的最终列表。
foreach("${url_list}", "urls") {
exec(http("Activate User")
.get("${urls}")
)
}
https://stackoverflow.com/questions/46998276
复制相似问题