2016-06-11 15 views
1

要素の親に最も近い子のdivを返したいとします。分度器:要素の集合にwhere句を使用する

HTML

<div id='Parent'> 
    <div> 
    <div></div> 
    </div> 
    <div> 
    <div></div> 
    <div></div> 
    <div></div> 
    </div> 
</div> 

分度器

var parent = element(by.id('Parent')); 
var topChildren = parent.all(by.tagName('div')).then(elem => [elem[0], elem[1]]); //this doesn't work. 

私はここでロジックが間違っている可能性があります知っている(上の2つの要素が本当にトップ子供のでしょうか?)が、私はしないでくださいこれは要素の配列を返すことさえあると思います。たとえば、topChildren.getAttribute('class')topChildren.getAttribute is not a functionを投げるので、戻り値は要素の集合として見えません。

答えて

1

直接的な子のみ(非再帰的な検索)が必要なので、by.tagName()は使用できません。再帰的に動作し、それを変更する方法はありません。私は"CSS selector"> direct parent-child relationship selectorを経由して、それを解決するだろう。ここ

var topChildren = $$("#Parent > div"); 

$$element.all(by.css())からshortcutです。


CSSセレクタがparent > children様セレクタで親部品を持っている必要があるため、この場合には、あなたが最初に#Parent部分を持ってしなければならないことに注意してください。言い換えれば、あなたはを行うことはできません。

var parent = element(by.id('Parent')); 
var topChildren = parent.$$("> div"); // <- would fail 

を使用すると、個別に定義parent要素を持っている必要がある場合は、by.xpath()は役立つだろう:

var parent = element(by.id('Parent')); 
var topChildren = parent.all(by.xpath(("./div")); 
関連する問題