2016-04-11 19 views
2

すべての要素を選択するための堅実な方法があります内にの要素がありますか?私はすべてinner divを選択したい場合に、今分度器で要素内のすべての要素を選択

outer: { get: function() { return element(by.css(".outer")); } } 

:我々は次のような構造

... 
<div class="outer"> 
    <div class="inner"></div> 
    <div class="inner"></div> 
</div> 
... 

そして、私たちのためにouterを選択したコードの一部を持っていると仮定しましょうすると、以下のです次のコード:

inner: { get: function() { return this.outer.element.all(by.css(".inner")); } } 

element.allは機能ではないというエラーが表示されます。これには良い方法がありますか?

+0

あなたがいることそれをしなければならないでくださいちょっとだけ 'by.css("。outer> .inner ")'を使うことはできませんか? – GillesC

+0

こんにちは@GillesC、あなたのコメントありがとう!それは有効な方法であり、私はそのようにすることができます。しかし、DRYパターンに従いたいと思います。 '.outer'が存在するかどうか、そして' .inner' divに "Some Text"が含まれているかどうかをテストする必要があるとしましょう。これには良い解決策がありますか? –

答えて

3

あなたが使用しようとしているアイデアは実際には正しいです - それは "チェーン"と呼ばれ、was added in Protractor 0.17.0です。それはあなたがその中間体を必要としないということだけですelement。置き換え:

this.outer.element.all(by.css(".inner")) 

で:

this.outer.all(by.css(".inner")) 

またelement(by.css())element.all(by.css())ため$$$ショートカットがあることに注意してください - あなたはそれらを適用した場合:

outer: { get: function() { return $(".outer"); } } 
inner: { get: function() { return this.outer.$$(".inner"); } } 
+0

ありがとう!これは本当にクールです! –