2016-07-06 4 views
0

Использование последней версии веб-драйвера и nightwatchjs.Невозможно получить значения с веб-страницы с помощью Nightwatchjs

Используя приведенный ниже код, я никогда ничего не получаю в gotTags. Если я установить точку останова в:

browser.elementIdText(element, function (result) { 
         gotTags.push(result.value); 
         console.log(result.value); 
}); 

Он никогда не нарушает его.

Я знаю, что запрос работает и возвращает 10 элементов:

document.querySelector('iframe[src="about:blank"]').contentDocument.querySelectorAll('.gtm-debug-tags-fired-container .gtm-debug-tags-card-title') 

Код:

browser 
     .url(config.url) 
     .waitForElementPresent('body', 5000) 
     .waitForElementPresent('iframe[src="about:blank"]', 10000) 
     .execute(function(){ 
       return document.querySelector('iframe[src="about:blank"]').contentDocument.querySelectorAll('.gtm-debug-tags-fired-container .gtm-debug-tags-card-title') 
      }, function(elems){ 
       var element; 

       for (var i = 0; i < elems.value.length; i++) { 
        element = elems.value[i].ELEMENT; 

        browser.elementIdText(element, function (result) { 
         gotTags.push(result.value); 
         console.log(result.value); 
        }); 
       } 

ответ

2

Документация http://nightwatchjs.org/api#execute говорит, вы пропустили второй (или третий в данный момент) параметр.

function(elems){ 
      var element; 

      for (var i = 0; i < elems.value.length; i++) { 
       element = elems.value[i].ELEMENT; 

       browser.elementIdText(element, function (result) { 
        gotTags.push(result.value); 
        console.log(result.value); 
       }); 
      } 

Эта часть должна быть третьим параметром, так как второй параметр арг для функции в первом параметре.

Таким образом, я думаю, что это должно быть как

.execute(function(){ 
      return document.querySelector('iframe[src="about:blank"]').contentDocument.querySelectorAll('.gtm-debug-tags-fired-container .gtm-debug-tags-card-title') 
     }, [], function(elems){ // added [] here as second parameter 
      var element; 

      for (var i = 0; i < elems.value.length; i++) { 
       element = elems.value[i].ELEMENT; 

       browser.elementIdText(element, function (result) { 
        gotTags.push(result.value); 
        console.log(result.value); 
       }); 
      } 
+0

Хороший улов! Я займусь этим завтра - спасибо! – jBoive