Объедините текст и используйте его в качестве переменной в транспортире - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь объединить две строки «globalVariables.EditButton_» и значение «i» и передать эту строку, например «globalVariables.EditButton_1», в качестве переменной, которая должна ссылаться на элемент кнопки, который мы сохранили в качестве глобальной переменной.Ниже мой код, но он не работает.Ошибка:

"Сообщение: Ошибка: Button.isDisplayed не является функцией Стек: TypeError: Button.isDisplayed не является функцией"

Фрагмент кода:

it('should show the same data in both Page' , function(){

   var RowCount=  
globalVariables.tableData_Dashboard.all(by.tagName("tr")).count() -1;

   for (var i=1; i < RowCount; ++i){
     var Button = 'globalVariables.Edit_Button_'+i;

     expect(Button.isDisplayed());


// do something

 }

});

Как добавить две строки и использовать их в качестве переменной в этом случае?

1 Ответ

0 голосов
/ 17 января 2019

В приведенном выше фрагменте ваш globalVariables.tableData_Dashboard.all(by.tagName("tr")).count() возвращает обещание . Поэтому, когда вы добавляете их вместе, вы добавляете обещание для int и int. Следующая вещь, которая выглядит странно: var Button = 'globalVariables.Edit_Button_'+i; Это не оценивается как elementFinder. Я согласен с комментарием Юна выше, где вы должны использовать globalVariables['Edit_Button_'+i];

Использование async / await

Итак, я собираюсь ответить на этот вопрос с помощью async / await, и поток управления отключен. Это с SELENIUM_PROMISE_MANAGER: false,, установленным в вашем файле конфигурации.

it('should show the same data in both Page' , async () => {

  const RowCount=  
(await globalVariables.tableData_Dashboard.all(by.tagName("tr")).count()) - 1;

  for (var i=1; i < RowCount; ++i){
    const button = globalVariables['Edit_Button_'+i];
    expect(await button.isDisplayed());

    // do something

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