2016-06-11 75 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. 

我知道這裏的邏輯可能是錯誤的(將在頂部的兩個元素真正做到了頂級的孩子嗎?),但我不認爲這甚至會返回一組元素。例如,topChildren.getAttribute('class')將引發topChildren.getAttribute is not a function,因此它甚至不會將返回視爲一組元素。

回答

1

由於您只需要直接子項(非遞歸搜索),因此無法使用by.tagName() - 它以遞歸方式進行操作,無法更改該項。我會通過"CSS selector"> direct parent-child relationship selector解決它:

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

$$這裏是一個shortcutelement.all(by.css())


注意,在這種情況下,你就必須有在開始#Parent部分,因爲CSS選擇器需要有在parent > children樣選擇一個父零件。換句話說,你不能做:如果您需要有單獨定義的parent元素

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

,那麼by.xpath()將幫助:

var parent = element(by.id('Parent')); 
var topChildren = parent.all(by.xpath(("./div"));