2017-04-27 7 views
1

テストされた要素が特定のCSSクラスを取得するまで、私のe2eテスト(angular2プロジェクト)で待機する方法を見つける必要があります。Angular2 E2E分度器。要素がクラスを持つまで待ちます

browser.wait()またはbrowser.sleep()がありませんか?

+2

理由*理由*提供します。https://メタ.stackexchange.com/questions/66377/what-is-the-xy-problem –

+1

'browser.wait()'を使わずに待っていますか?意味をなさない...それがそうである。何かを待つ。 – Gunderson

答えて

3

あなたは質問に「wait」という言葉を使用しましたが、組み込みの待機機能を使わずに解決することを求めました。私はそれにあまり意味がありません。

我々は前に似た何かを解決し、browser.wait()と期待される条件として使用することができますカスタムウェイト機能を思い付いてきました:

function waitForCssClass(elementFinder, desiredClass) { 
    return function() { 
     return elementFinder.getAttribute('class').then(function (classValue) { 
      return classValue && classValue.indexOf(desiredClass) >= 0; 
     }); 
    }; 
}; 

browser.wait(waitForCssClass($("#myid"), "desiredClass"), 5000); 
+0

[expectedCondition](http://www.protractort.org/#/api?view=ProtractorExpectedConditions)を使用するだけではどうでしょうか。 ElementFinderにクラスを提供し、VisibilityOfの例を待ちます。だからカスタムメソッドはありませんが、 "plain" Protractor api – wswebcreation

+0

@wswebcreation right、私はそれについて考えましたが、ここで私はクラスを持つのを待つ要素のロケータを変更できないと仮定しています。たとえば、要素はxpath、名前、またはリピータなどで配置されています。 – alecxe

+0

真実ですが、クラスを知っているので、 '$( '。className')'や '$( ' .scope ')。$('。className ') 'は、期待される条件のElementFinderとして使用できます – wswebcreation

関連する問題