我需要帮助列出/计算父母的子元素数量。 请参考附带的代码,我想算多少
<div class="media"> ... </div>
是父母的
<div id="draft_studies" class="xyz">
或<div id="open_studies" class="xyz">
我是守夜人的新手,我确实看过守夜人参考,但没有找到任何帮助,可能是我错过了什么。
感谢任何帮助。
<div class="tab-content">
<div id="draft_studies" class="xyz">
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
</div>
<div class="tab-content">
<div id="draft_studies" class="xyz">
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
</div>
<div class="tab-content">
<div id="draft_studies" class="xyz">
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
<div class="media"> ... </div>
</div>
我到目前为止所尝试的是:
listElements: function(list) {
return this
.api.elements('css selector','draft_studies',function(result){
OR .api.elementIdElements('draft_studies', 'css selector', ".media" ,function(result) {
console.log("Element is ... " + result.value);// --> LOGS - Element is ... [object Object]
console.log("Element is ... " + result.value.length);// --> LOGS - Element is ... undefined
result.value.forEach(function (value) { //Fails with error - TypeError: result.value.forEach is not a function( Which i think is correct, as we cant have forEach here)
console.log(value);
var elementID = value.ELEMENT;
console.log('Checking Element - ' + elementID);
})
});
},
和
listElementsNew: function(list) {
return this
.api.perform(function() {
var childNodes = [];
childNodes.push(document.getElementById('@studyListTable2').childNodes);
});// Fails with error - Error while running perform command: document is not defined
- 穆克什
答案 0 :(得分:6)
以下解决方案适用于我,由另一组人员发布:
browser.elements('css selector','#draft_studies > .media', function(result) {
result.value.forEach(function (value) {
var elementID = value.ELEMENT;
console.log('Checking Element - ' + elementID);
});
});
答案 1 :(得分:1)
var assert = require('assert');
module.exports = {
'foobar': function (browser) {
browser
.url('http://localhost:3000')
.waitForElementVisible('body', 1000);
var numElements = 9;
browser.execute(function(){
var draftStudies = document.getElementById('draft_studies');
return draftStudies.getElementsByTagName('div').length;
}, [], function(result){
assert.equal(result.value, numElements, 'Incorrect number of children');
});
browser.end();
}
}
我们使用execute函数来运行一些客户端JS以获取子元素的数量。在回调中,我们使用断言库(Nightwatch扩展以便它可用)来检查我们是否有正确数量的子节点。如果没有正确数量的孩子,那么测试将会出错并失败。不幸的是,如果测试通过,将没有控制台输出。