Использование элементов Webdriver.io

Я хочу перебрать элемент и сделать что-то для всех из них, например. установить значения и т. д. На данный момент у меня есть следующий код, но я даже не могу получить атрибут из выбранных элементов.

 client.elements("freeforms-widget").then(function (elems) {
           for (let elem of elems.value) {
             let k =  client.elementIdAttribute(elem.ELEMENT,'name');
             console.log(k);
          }
        })

И все, что я вижу, это следующее:

{ state: 'pending' }
{ state: 'pending' }
{ state: 'pending' }
{ state: 'pending' }
{ state: 'pending' }
{ state: 'pending' }

Сам элемент вроде в порядке

{ state: 'success',
  sessionId: 'dd301839-369a-45a2-a38c-4bb8ce0a439b',
  hCode: 1204992695,
  value:
   [ { ELEMENT: '0' },
     { ELEMENT: '1' },
     { ELEMENT: '2' },
     { ELEMENT: '3' },
     { ELEMENT: '4' },
  ....

Что я делаю не так и как это исправить?


person Aldarund    schedule 29.07.2016    source источник


Ответы (1)


elementIdAttribute() возвращает обещание. { state: 'pending' } – это строковое представление неразрешенного ожидающего обещания. Чтобы на консоли было напечатано реальное значение, вам нужно выполнить обещание:

client.elementIdAttribute(elem.ELEMENT,'name').then(function (k) {
  console.log(k);
});
person alecxe    schedule 29.07.2016
comment
хотя это работает, это не идеально. Это означает, что при сравнении элементов друг с другом мы должны писать код с большим количеством обратных вызовов. - person Steve Tomlin; 13.01.2017