2016-07-06 28 views
0

Webドライバとnightwatchjsの最新バージョンを使用しています。Nightwatchjsを使用してWebページから値を取得できません

以下のコードを使用して、私は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は、2番目の(または現時点では三分の一を)逃していると言いますパラメータ。第二は、最初のパラメータで関数の引数パラメータであるので

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

関連する問題