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
私の質問は、他の列の値を取得するにはどうすればよいですか?
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"]);
最も簡単な方法は次のとおりです。
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")
私はそれを実装しました、そしてそれは私のために働いています。