我必须使用NW做一个小测试工具,从一个简单的ol li元素获取数组的标题.Ex:我需要一个数组:Coffe,Tea,Milk。
<ol>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
感谢您提前合作。
编辑&gt;&GT;
好吧,感谢@ SoftwareEngineer171,我使用.execute()将js注入到Nightwatch中,现在正在运行。这是我使用的代码,现在正在使用数组..这段代码用@ SoftwareEngineer171代码打印ol列表的li项目(在这种情况下我使用了css选择器)......
module.exports = {
'Demo' : function (client) {
client
.url('http://mylink.com/items')
.waitForElementVisible('body', 1000)
.execute(function(){
var arr = (function(a, b){
return (Array(a.length) + '').split(',').map(function(c, d){
return a[d].innerHTML;
});
})(document.getElementsByClassName("listing-view")[0].getElementsByClassName("listing-view-item"));
return arr;
}, ['arr'] ,function(result){
array_h1 = result.value
console.log(array_h1.length)
})
.pause(5000)
.end();
}
};
答案 0 :(得分:1)
这解决了您的问题。
var arr = (function(a){
return (Array(a.length) + '').split(',').map(function(c, d){
return a[d].innerHTML;
});
})(document.getElementsByTagName('ol')[0].getElementsByTagName('li'));
修改强>
好的,您要求解释此代码,所以这里是。
首先,我们定义anonymous
函数,它需要一个参数(这是代码中的第一个函数),我们将参数document.getElementsByTagName('ol')[0].getElementsByTagName('li')
作为变量a
传递,代表您的所有<li>
元素。现在,a
是一个具有HTMLCollection
函数的对象,因为它是构造函数,因此它不是一个数组。要从此集合中提取文本,我们必须将其转换为数组。这就是我们创建新数组并将每个元素从HTMLCollection
映射到新数组的原因。您看到的第二个函数只是将每个元素从HTMLCollection
对象复制到数组,然后返回数组,如您所愿
如果您仍然不清楚constructor
,anonymous
函数,数组映射等是什么,建议您阅读this文章。