我必须使用 NW 做一个小测试工具,从一个简单的 ol li 元素获取数组的标题。例如:我需要一个包含:Coffe、Tea、Milk 的数组。
<ol>
<li>Coffee</li>
<li>Tea</li>
<li>Milk</li>
</ol>
提前感谢您的合作。
编辑>>
好吧,感谢@SoftwareEngineer171,我使用 .execute() 将 js 注入(inject) 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();
}
};
最佳答案
这解决了您的问题。
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文章。
关于javascript - 我如何使用 Nightwatch.js 从 ol 元素中的 li 项目中获取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38416697/