Testcafe, как прочитать ответ json, выбрать первый элемент и передать его селектору. - PullRequest
3 голосов
/ 12 июня 2019

Прочитать ответ JSON

1) Когда я захожу на этот URL-адрес «http: example.com/fruits», он попадает в конечную точку «http: example.com/v1/collections/fruits», и я вижу JSON в ответе сети браузера:

{
   "total":3,
   "page":1,
   "pageSize":24,
   "rows":[
      {
         "id":19,
         "title":"Apple"

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

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

      },

   ]
}

2) Я хочу взять первый заголовок - Apple, передать его селектору и щелкнуть по нему

Ответы [ 2 ]

5 голосов
/ 12 июня 2019

В вашем приложении вы можете создать метод 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))

И после этого вы можете передать его своему селектору.

0 голосов
/ 12 июня 2019

Вы также можете использовать 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']
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...