量角器:从表中返回一个对象数组

时间:2015-01-09 04:39:41

标签: angularjs testing protractor end-to-end

我有一个包含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()
                     }
                  );
});

1 个答案:

答案 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()
           };
});