我想返回最靠近元素父级的子div
。
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
,因此它甚至不会将返回视为元素集合。
答案 0 :(得分:1)
由于您只需要直接子项(非递归搜索),因此无法使用by.tagName()
- 它以递归方式运行,无法更改。我会通过"CSS selector"和>
direct parent-child relationship selector:
var topChildren = $$("#Parent > div");
$$
这里是shortcut到element.all(by.css())
。
请注意,在这种情况下,您必须在开头有#Parent
部分,因为CSS选择器需要在parent > children
中有父部分 - 就像选择器一样。换句话说,你无法做到:
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"));