2016-11-11 17 views
0

私はちょうど悪夢を使用し始めました。 テスト目的で私のWebページで使用していました。悪夢の選択された要素の動的リストで連続してクリック操作を実行します

私は以下のユーザーインターフェイスを持っています。

メニュー

TAB1 |タブ2 |選択したタブ

 selected tab data 

ためTAB3 ......(動的に生成されたタブ)

コンテナのdivが、私はメニューが含まれているDOM要素を得ました。

各タブをクリックして選択したタブデータを取得する方法を知りません。

ドキュメントを読んだ後、私はこれを理解できませんでしたが、これについての例はありません。

私はこれを行うことができました -

var Nightmare = require('nightmare'); 
var nightmare = Nightmare({ show: true }); 

nightmare 
    .goto('http://www.example.com') 
    .wait('#menu') 
    .evaluate(function() { 
     var menuDiv = document.querySelector('div#menu.content-disp'); 
     var menuAnchors = menuDiv.querySelectorAll('a[href]'); 

     var res = ""; 
     for(var i =0;i<menuAnchors.length;i++){ 
      res+=menuAnchors[i].innerText; 
     } 

     return res; 
    }) 
    .end() 
    .then(function (result) { 
     console.log(result) 
    }) 
    .catch(function (error) { 
    console.error('Search failed:', error); 
    }); 

私はあなたがアンカーのリストを構築した後、あなたが反復処理する必要があります悪夢バージョン

"dependencies": { 
    "nightmare": "^2.8.1" 
    } 

答えて

1

を使用しています彼らとの約束は、ささいなことではありません。次の点を考慮し、その検索結果を反復処理し、各ページのタイトルを取得します。

nightmare.then((result) => 
    result.reduce(function(accumulator, url) { 
    return accumulator.then(function(results) { 
     return nightmare.goto(url) 
     .wait('body') 
     .title() 
     .then(function(result){ 
      results.push(result); 
      return results; 
     }); 
    }); 
    }, Promise.resolve([])).then(function(results){ 
    console.dir(results); 
}); 

あなたは"Asynchronous Operations and Loops" at nightmare-examplesに読み取りを与えたいと思うことがあります。それはあなたが始めるのを助けるはずです。

+0

これは素晴らしいことです。あなたのこの回答は私を助けましたhttp://stackoverflow.com/questions/38772060/moving-between-pages-and-scraping-as-i--with-nightmare/38808596#38808596 これは悪夢のギタバブの公式の私の文書を読もうとしているはずです - 「非同期操作とループ」は悪夢の例です。 – WitVault

+1

@WitVault私は、ナイトメアにgithub pagesブランチを追加し、近い将来、ある時点で「悪夢の例」のすべてではないにしてもほとんどをマージすると思う。 – Ross

+0

本当に役に立ちます。あなたは悪夢に貢献していますか? – WitVault

関連する問題