web-dev-qa-db-ja.com

分度器:目次を読む

angular jsアプリのe2eテストを作成していますが、これを理解できません。データを含むテーブルがあります。最初の行のデータを抽出したいと思います。

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

分度器elementExplorerでこれを実行すると、3列すべての値が出力されます。

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

これを行うと、最初の列の値が出力されます

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

私の質問は、他の列の値を取得するにはどうすればよいですか?

6
JDunn

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

次に、それを列テキストの配列であると主張できます。

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

最も簡単な方法は次のとおりです。

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")

私はそれを実装しました、そしてそれは私のために働いています。

7
Abbas ALI