读取JSON响应
1)当我访问这个URL 'http:example.com/fruits‘时,它命中一个端点’http:example.com/v1/collection/fruits‘,并且我在浏览器网络响应中看到JSON:
{
"total":3,
"page":1,
"pageSize":24,
"rows":[
{
"id":19,
"title":"Apple"
},
{
"id":21,
"title":"Grape",
},
{
"id":6,
"title":"Orange",
},
]
}
2)我想选择第一个标题- Apple,并将其传递给选择器并单击它
发布于 2019-06-12 21:42:58
在你的应用中,你可以创建“GET”方法,如下所示:
fetch('http:example.com/v1/collections/fruits', {
method: 'GET'
})
.then(response => response.json())
.then(data => {
console.log(data.rows[0]['title']) // should return 'Apple'
})
.catch(error => console.error(error))
然后,你可以把它传递给你的选择器。
发布于 2019-06-13 04:39:57
您也可以使用RequestHook来获取此信息。
这可以存在于一个帮助文件中
import { RequestHook } from 'testcafe';
export default class MyRequestHook extends RequestHook {
constructor (requestFilterRules, responseEventConfigureOpts,ObjToReturn) {
super(requestFilterRules, responseEventConfigureOpts);
this.ObjToReturn = ObjToReturn;
}
onRequest (event) {
if(event.isAjax) {
console.log(event.requestOptions.url);
}
}
onResponse (event) {
this.ObjToReturn = JSON.parse(event.body.toString());
}
}
然后,这将位于您的主测试文件中:
import { Selector } from 'testcafe';
import MyRquestHook from './MyHTTPRequestFile';
let getReponse = {};
const hookConfigOptions = {
logResponseBody: true,
stringifyResponseBody: true,
includeHeaders: true,
includeBody: true
}
let getFruits = new MyRequestHook({url:'http://example.com/fruits', method: 'get'},hookConfigOptions,getResponse);
fixture `Name Of test`
.requestHooks(getFruits)
test('Do something with response', async t => {
//do something with the response object
console.log("Response Data: " + getFruits.rows[0]['title']
}
https://stackoverflow.com/questions/56556487
复制相似问题