2017-03-31 4 views
0

私は分度器webElementFinder testElementを持っています。 divの子供(孫やその他の子孫ではない)と一致したいので、testElement.find('div')はすべての子孫divを検索するため動作しません。分度器が(その存在と分度器を念頭に置いて角度を使用して構築されている場合角度はjQueryのを使用するのに十分スマートですので、理にかなっている)jQueryのように働いた場合CSSを使用して分度器webElementFinderの子供のみを検索する

、私はちょうどfind引数がされていないにも関わらず動作しますtestElement.find(' > div')だろう有効なCSSセレクタ自体。しかし、分度器は組み込みのElement関数を使用するだけなので、そのCSSセレクタはそれ自身では有効ではなく、分度器はエラーをスローします。

xpathはネイティブで子供を見ることができるので、私はこのルートAngular JS, Protractor locator, get direct children of elementに行くことができましたが、xpathよりもむしろCSSを使用したいと思います。

答えて

3

現在の要素から直接的な親子ロケータを持つ直接的で簡単な方法はありません。それを解決するための一般的な方法は./ XPath式を使用することですが、これはlocator()を使用する「ハック」もあります:

testElement.$(testElement.locator().value + ' > div'); 
+1

セレクタの再表示を避ける(DRYの後に続く)ため、これを答えとして選択します。 –

2

だけ使用します。

$('testElement > div') 
0

をソリューションは、いくつかのことに依存します:

  1. testElementはElementFinder(const testelement = element(by.css('.some-selector')))であれば、あなたがtestelement.all(by.css('div'))を行うことができます。 allにご注意ください。チャイルドチルについては、の子供がすべて含まれています。それはtestElementは、セレクタ(const foo = '.testElement')であれば、あなたが$$('.testElement > div')を行うことができますdocs
  2. を参照してください、ElementArrayFinderを返します。これは、私はあなたがここから取得する利点は、あなたがすることがあり、>とCSSのセレクタにtestElementのセレクタを追加することを願ってdocs

を参照して、すべてのそれはElementArrayFinderを返します戻りますtestElement - セレクタのすべての要素を取得する

関連する問題