我有一个包含3列'firstname','lastname','birthday'的表格,如下所示:
<table id="table">
<tr>
<td id="firstname">John</td>
<td id="lastname">Smith</td>
<td id="birthday">Jan 1 2014</td>
<tr>
<tr>
<td id="firstname">Bill</td>
<td id="lastname">Matthews</td>
<td id="birthday">Jan 2 2014</td>
<tr>
</table>
我想从这个表创建一个JSON,如下所示:
{
firstname: "John",
lastname: "Smith",
birthday: "Jan 1 2014"
},
{
firstname: "Bill",
lastname: "Matthews",
birthday: "Jan 2 2014"
}
我正在尝试这样的事情:
var tableRows = [];
element.all(by.tagName('tr')).each( function(element) {
tableRows.push(
{
firstname: element(by.id('firstname')).getText(),
lastname: element(by.id('lastname')).getText(),
birthday: element(by.id('lastname')).getText()
}
);
});
答案 0 :(得分:3)
使用map()
,引用更改日志:
为element.all添加了一个map函数,以便为每个函数应用一个函数 元素并返回转换的结果。
如果存在包含多个的对象,则解析promises 承诺。添加索引作为map函数的第二个参数 回调。
这里的关键点是它将解决多个承诺:
var items = element.all(by.tagName('tr')).map(function (tr) {
return {
firstname: tr.element(by.id('firstname')).getText(),
lastname: tr.element(by.id('lastname')).getText(),
birthday: tr.element(by.id('birthday')).getText()
};
});