如何将 json 响应中的特定数组元素捕获到小黄瓜属性中?

How do I capture a specific array element from json response into a gherkin cucumber attribute?

我试图从下面的 json 响应中捕获 ghi[0] 元素,即 x 并将其分配给使用 gherkin/cucumber 语言的我的 BDD 中的一个变量,但是它抱怨它无法读取 属性.

我是这样捕获的:

* def xyz = response.results.payload.abc.def.ghi

回应

{
    "results": {
        "payload": {
            "abc": [
                {
                    "def": [
                        {
                            "ghi": "x",
                        },
                        {
                            "ghi": "y",
                        },
                        {
                            "ghi": "y",
                        }
                    ]
                }
            ]
        }
    }
}

这就是它的抱怨:

features.blah: [1.1:50] blah.feature:30 - evaluation (js) failed: response.results.payload.abc.def.ghi, javax.script.ScriptException: TypeError: Cannot read property "ghi" from undefined in <eval> at line number 1

那是因为你的访问权限有误。下面这个有效:

* def xyz = response.results.payload.abc[0].def[0].ghi
* match xyz == 'x'

也就是说,如果你懒得遍历深度嵌套的数据,你可以这样做:

* def xyz = get[0] $..ghi
* match xyz == 'x'

请阅读文档,这将节省您的时间:) https://github.com/karatelabs/karate#get