2017-01-23 4 views
1

Nightmareを使用してページにアクセスし、指定された要素が存在するかどうかに基づいて異なる操作を実行します。要素にページが存在するかどうかをテストする機能はexistsですが、使用方法やここで使用できるかどうかはわかりません。誰かが私にこのタスクを行う方法の例を教えてもらえますか?ありがとうございました!悪夢/電子、要素が存在するかどうかによって、異なる操作を実行する方法は異なりますか?

答えて

4

ナイトメアが有効なので、exists()関数の戻り値をロジックとして使用する場合は、.then()をメソッドチェインに使用できます。これはvisible()またはevaluate()または値を返す関数にも適用されます。

私が提供した例では、searchboxセレクタが存在し、Googleに行き、タイトルを返して結果を条件付きでログに記録すると、Stackoverflowが検索されます。必要に応じて論理を連鎖させ続けることができます。

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

nightmare 
    .goto("http://stackoverflow.com") 
    .exists("#search input[type=text]") 
    .then(function (result) { 
     if (result) { 
      return nightmare.type("#search input[type=text]", "javascript\u000d") 
     } else { 
      console.log("Could not find selector") 
     } 
    }) 
    .then(function() { 
     return nightmare 
      .goto("http://www.google.com") 
      .wait(1000) 
      .title() 
    }) 
    .then(function (title) { 
     if (title == "Google") { 
      console.log("title is Google") 
     } else { 
      console.log("title is not Google") 
     } 

     return nightmare.end() 
    }) 
    .catch(function (error) { 
     console.log(error) 
    }) 
+0

回答と編集のためにトムありがとう! –

関連する問題