2017-07-17 4 views
0

私は分度器テストでアニメーションを処理しようとしています。オプションの1つは、アニメーションを無効にすることです。しかし、私はそれをしたくありません。 2番目のオプションは、各工程の前に、この方法を行うことです。アニメーションを処理する各ステッププロジェクタのイベントエミッタの前に

var EC = protractor.ExpectedConditions; 
browser.wait(EC.stalenessOf(element(by.css('[class*="ng-animate"]'))), 5000); 

角度がアニメーションである要素のクラスに「NG-アニメイト」を追加するため、それは動作します。

ので、2つの質問があります。

  1. 分度器の各ステップの前に追加する方法は?
  2. 「クリック」などの定義済みのメソッドで何かを放出する分度器にeventEmitterを追加するにはどうすればよいですか?

アニメーション処理に専念していない場合でも、この2つの質問に対する回答を理解してください。

答えて

0

私の解決策です。分度器でどのようにpluginsが働くかの知識が必要です。 "waitForPromise"フックが不明瞭になっていますが、thisの例で解決策を実行するのに役立ちました。テストの実行中に各約束を

waitForPromise: function(){ 
    return browser.executeAsyncScript(function(){ 
     var callback = arguments[arguments.length - 1]; 

     var counter = 0; 
     var checker = setInterval(function(){ 
      if (counter>100){ 
       clearInterval(checker); 
       callback(); 
      } 

      if ($('[class*="ng-animate"]').length>0) { 
       // console.log('catched'); 
      } else { 
       // console.log('notPresent or Disappeared'); 
       clearInterval(checker); 
       callback(); 
      } 
      counter++; 
     },50); 

    }).then(function() { 
     console.log('done'); 
    }); 
} 

クラス「NG-アニメイト」で任意の要素がある場合は、それだけでチェックし、それがない場合は、この要素が消滅するため、それが待機またはカウンタ> 100(5秒)。おそらく、これは最良の解決策ではないでしょう。なぜなら、テストのステップ中にアニメーションが存在する可能性があるからです。この場合、全体的なテストの実行が大幅に遅れることになります。

関連する問題