我有功能
var goThrough = function(opt_parentElement) {
var using = opt_parentElement;
var matches = [];
var addMatchingLeaves = function(element) {
if (element.children) {
if (element.children.length === 0) {
matches.push(element);
}
for (var i = 0; i < element.children.length; ++i) {
addMatchingLeaves(element.children[i]);
}
}
};
addMatchingLeaves(using);
return matches;
};
然后我在测试中将其称为
amountOfElements = goThrough(元素(by.css(&#39; .form-group&#39;)));
html本身就是
<div class="form-group has-feedback">
<input id="password" name="password" type="password">
</div>
问题是函数看不到.form-group的子元素。我已尝试过其他元素,但结果是相同的,函数不会先进入内部&#34;如果&#34;
答案 0 :(得分:1)
element(by.css('.form-group'))
会返回ElementFinder
,而不是查询其children
所需的DOM元素。如果你有很多元素但是做的工作,这种方法有点慢:
var getLeafs = function(node) {
return node.all(by.css('*')).filter(function(child) {
return child.all(by.xpath('*')).count().then(function(childrenCount) {
return childrenCount === 0;
});
});
};
它返回node
没有孩子的上下文中的元素。
用法:
var leafs = getLeafs(element(by.css('.form-group')));
leafs.count().then(function(c) {
console.log(c);
});