Рекурсивная функция Ошибка при получении текста из элемента - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь выполнить такую ​​рекурсивную функцию:

function recurse(index, items) {
    if(index<items.length) {
        items[index].getText().then(function(itemtext) {
            items[index].click().then(function() { 
                browser.params.utils.waitForElement('disappear', browser.params.constants.GENERALPATHS.ALERTS_AND_COLLISIONS.SPINNER, waitLongTime, 'present').then(function() {
                    element.all(by.className('ui-grid-cell ng-scope ui-grid-disable-selection ui-grid-coluiGrid-00YV darkness-cell-row')).then(function(itemtotext) {
                        itemtotext[0].getText().then(function(text) {
                            expect(itemtext).toBe(text);
                            browser.element(by.className('glyphicon glyphicon-remove')).click().then(function() {
                                browser.params.utils.waitForElement('disappear', browser.params.constants.GENERALPATHS.ALERTS_AND_COLLISIONS.SPINNER, waitLongTime, 'present');
                            });
                        });
                    });
                });                       
            });
        });
        recurse(index+1,items);
    } else {

    }
}

Я получил ошибку во втором getText (): Cannot read property 'getText' of undefined, поэтому я не знаю, почему я получил эту ошибку.

Заранее всем спасибо.

1 Ответ

0 голосов
/ 30 мая 2020

Удалите ненужные вложенные then(), чтобы сделать код более читабельным. Рекомендуем использовать await/async

function resurse(index, items) {
  class_name = 'ui-grid-cell ng-scope ui-grid-disable-selection ' + 
               'ui-grid-coluiGrid-00YV darkness-cell-row';

  if (index < items.length) {
    itemtext = items[index].getText();
    items[index].click();
    browser.params.utils.waitForElement(
      'disappear', 
      browser.params.constants.GENERALPATHS.ALERTS_AND_COLLISIONS.SPINNER, 
      waitLongTime, 
      'present'
    );
    itemtotext = element.all(by.className(class_name)).first().getText();

    promise.all([itemtext, itemtotext]).then(function(values){
      expct(values[0]).toEqual(values[1])
    });

    element(by.className('glyphicon glyphicon-remove')).click();

    browser.params.utils.waitForElement(
      'disappear', 
      browser.params.constants.GENERALPATHS.ALERTS_AND_COLLISIONS.SPINNER, 
      waitLongTime, 'present'
    );

    browser.getTitle().then(function(){
       recurse(index + 1, items);
    });

  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...