Как прочитать Json и передать его свойства методу страницы, который возвращает обещание с помощью транспортира - PullRequest
0 голосов
/ 01 июля 2018

Мне нужна помощь по повторению цикла Json для цикла с использованием транспортира:

Контекст моей проблемы:

  1. У меня есть метод, который возвращает Json-ответ службы REST.
  2. Ответ обрабатывается в другом методе и проходит цикл for. Во время каждой итерации идентификатор передается в xpath элемента в классе страницы (объектная модель страницы), где элемент щелкается и возвращает обещание.
  3. Код внутри цикла for выполняется только один раз успешно, и остальные итерации, где происходит вызов метода класса страницы, но не происходит щелчок элемента внутри этого метода страницы.
  4. Я знаю, что что-то не так с обработкой обещаний в цикле for в моем коде. Просматривал много страниц и блогов и пробовал способы, которые они предложили, но не смогли добиться успеха. Я только что упомянул ниже один способ обработки обещаний в цикле, предложенный в одном из блогов.

Помощь по этому вопросу высоко ценится.

вот мой тестовый код:

    **Method that returns REST Api response:** This method returns rest api response using node fetch.

    getRestApiResponse(resp) {
            let nf = require('node-fetch');
            let clientHierarchyDtos: ClientHierarchyDto[];
            let url = 'some url';

            nf(url)
            .then(function(response) { 
                return response.json();
             }).then(function(data) {
                 resp(data);
            })

        }

      ClientHierarchy class: This is the structure of Json data.

      export class ClientHierarchyDto {

    id: string;
    label: string;
    name: string;
    childLevels: ClientHierarchyDto[];

}

    **Test Method code where this response is iterated:**

    const rqnsCascadeRestServiceObj: rqnsCascadeRestService = new rqnsCascadeRestService();

      let clientHierarchies: ClientHierarchyDto[];
      var promises = [];
      rqnsCascadeRestServiceObj.getRestApiResponse(function (resp) {
        const clientHierarchies = resp;
        console.log("hierarchy size: " + clientHierarchies.length);
        for (let regionLevelHierarchy of clientHierarchies) {
          const rqnsCascadeMeasureDashboardPage: rqnsCascadeMeasureDashboard = new rqnsCascadeMeasureDashboard();
                promises.push(rqnsCascadeMeasureDashboardPage.expandAccordian(regionLevelHierarchy.id));

        }

        Promise.all(promises).then((data) => {
          return true;
      }, (error) => {
          return false;

      });
      });

    **Page class method where element click is happening:** This is the method to which ids from json is passed to element locator and clicking the element.

    Accordian:ElementFinder; 
    expandAccordian(Id:string) {
            console.log("accordianId inside: "+ Id);
            this.Accordian = element(by.id(Id));          
            return this.Accordian.click();
        }


    Please let me know if anything else is needed.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...