2016-07-29 4 views
2

Я хочу перебрать элемент и сделать что-то на всех из них, например. установить значения и т. д. На данный момент у меня есть следующий код, но я не могу даже получить атрибут от выбранных элементов.Использование элементов 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' } 

Сами elems, кажется, хорошо

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

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

ответ

2

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

client.elementIdAttribute(elem.ELEMENT,'name').then(function (k) { 
    console.log(k); 
}); 
+1

В то время как это работает, оно не является идеальным. Это означает, что при сравнении элементов друг с другом нам приходится писать код с большим количеством обратных вызовов. –