Protractor : Read Table contents

坚强是说给别人听的谎言 提交于 2020-01-09 10:49:10

问题


I've been writing e2e tests for my angular js app and am unable to figure this out. I've got a table with data in it. I want to extract the first rows data.

<table>
    <tr>
        <td><\td>
        <td><\td>
        <td><\td>
    </tr>
</table>

I did this in protractors elementExplorer and it prints out the values of all 3 columns

element.all(by.repeater('item in items.list')).get(0).getText()
James
Byrne
1

If I do this, it prints out the first column value

element.all(by.repeater('item in items.list')).get(0).element(by.css('td')).getText()
WARNING - more than one element found for locator By.cssSelector("td") - the first result will be used
James

My Question is, how do I get the values of the other columns?


回答1:


Use all() in conjunction with map():

var row = element.all(by.repeater('item in items.list')).first();
var cells = row.all(by.tagName('td'));

var cellTexts = cells.map(function (elm) {
    return elm.getText();
});

Then, you can assert it to be an array of column texts:

expect(cellTexts).toEqual(["The first text", "The second text", "The third text"]);



回答2:


Easiest way would be as below:

var tabledata = element.all(by.css("./table"));

// get rows 
var rows = tabledata.all(by.tagName("tr"));

// get cell values
var cells = rows.all(by.tagName("td"));

expect(cells.get(0).getText()).toEqual("something")
expect(cells.get(1).getText()).toEqual("something")
expect(cells.get(2).getText()).toEqual("something")

I implemented it and it is working for me.



来源:https://stackoverflow.com/questions/29501976/protractor-read-table-contents

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!