首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Testcafe如何读取json响应并选择第一项并将其传递给选择器

Testcafe如何读取json响应并选择第一项并将其传递给选择器
EN

Stack Overflow用户
提问于 2019-06-12 15:09:27
回答 2查看 829关注 0票数 3

读取JSON响应

1)当我访问这个URL 'http:example.com/fruits‘时,它命中一个端点’http:example.com/v1/collection/fruits‘,并且我在浏览器网络响应中看到JSON:

代码语言:javascript
复制
{
   "total":3,
   "page":1,
   "pageSize":24,
   "rows":[
      {
         "id":19,
         "title":"Apple"

      },
      {
         "id":21,
         "title":"Grape",

      },
      {
         "id":6,
         "title":"Orange",

      },

   ]
}

2)我想选择第一个标题- Apple,并将其传递给选择器并单击它

EN

回答 2

Stack Overflow用户

发布于 2019-06-12 21:42:58

在你的应用中,你可以创建“GET”方法,如下所示:

代码语言:javascript
复制
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))

然后,你可以把它传递给你的选择器。

票数 5
EN

Stack Overflow用户

发布于 2019-06-13 04:39:57

您也可以使用RequestHook来获取此信息。

这可以存在于一个帮助文件中

代码语言:javascript
复制
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());
    }
}

然后,这将位于您的主测试文件中:

代码语言:javascript
复制
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']
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56556487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档