NightwatchJS .elements возвращает строку, а не объекты

Я использую nightwatch и пытаюсь перебрать список элементов. Однако, когда я не получаю объекты или элементы, но получаю массив строк.

КОД

browser.elements("css selector", ele, function(r){
    browser.perform(function(){
      console.log("LIST", r);
    })
  })

ВОЗВРАТ

LIST { sessionId: 'b273b874-c084-4d17-8bbe-a911a170ef25',
  status: 0,
  state: 'success',
  value:
   [ { ELEMENT: '6' },
     { ELEMENT: '7' },
     { ELEMENT: '8' },
     { ELEMENT: '9' },
     { ELEMENT: '10' },
     { ELEMENT: '11' } ],
  class: 'org.openqa.selenium.remote.Response',
  hCode: 995684858 }

value должен возвращать объект webElements, верно?

заранее спасибо


person Rogue Panda    schedule 26.05.2015    source источник


Ответы (2)


Я немного боролся с этим, пока не просмотрел часть документации по Selenium.

По сути, это то, что ожидается вернуться. Эти элементы ELEMENT являются объектами WebElement JSON. Вы можете использовать некоторые команды Selenium, чтобы попытаться найти дополнительную информацию о них, выполнив что-то вроде этого:

_.each(list.value, function(element, i){ //using underscore instead of for loop.
   browser.elementIdAttribute(element.ELEMENT, 'name', function(result){
       //result.value will contain the name attribute on the element
   }
}

Вы можете увидеть список команд для селена здесь: http://nightwatchjs.org/api#protocol

Наконец, идентификатор, указанный в документации, относится к элементу element.ELEMENT выше.

Надеюсь, это поможет!

person Petrogad    schedule 19.06.2015
comment
Спасибо за это !, это помогло мне понять, как анализировать структуру WebElement из протокола NW wire. - person mekdev; 22.06.2015
comment
Не проблема! Было немного сложно понять из документов. - person Petrogad; 22.06.2015

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

Мой кусок кода здесь

browser.elements('css selector', 'header.modal-header > h2', (results) => {
            results.value.forEach((v, k) => {
               browser.elementIdAttribute(v.ELEMENT, 'tabindex', 
                function (index) {
                   if (index.value !== '-1') {
                        browser.verify.fail(`Expected tab index -1 not found for ContactUs header ${key}`);
                   }
                });
person Abitha    schedule 02.04.2018
comment
Не очевидно, как это отвечает на вопрос оригинального плаката. Возможно, вы захотите отредактировать свое сообщение, чтобы сделать его более очевидным (и проверьте stackoverflow.com/help/how-to-answer< /а>). - person rwp; 02.04.2018