以下は私のマークアップです
<tr ng-repeat="post in posts">
<td ng-click="activePost(post)" class="title">{{post.title}}</td>
<td><button class="btn btn-danger" ng-click="delete(post)">Delete</button>
</td>
</tr>
title
クラスを使用して要素を取得しようとしています。
リピーターにアクセスするために使用するコードは次のとおりです。
postsList = element.all(by.repeater('post in posts'));
JQueryで次のようなことを実行して要素を取得する方法はありますか?
var titleText = $("tr:first").find(".title").text();
分度器でこれに似た何かをする方法はありますか?
これはあなたの例のために働くはずです:
element.all(by.repeater('post in posts')).then(function(posts) {
var titleElement = posts[0].element(by.className('title'));
expect(titleElement.getText()).toEqual('YourEnteredTitle');
});
nilsK からの回答は私を助けましたが、完全には機能しませんでした。以下のコードがトリックを行いました:
element.all(by.repeater('post in posts')).then(function(posts) {
var titleElement = posts[0].element(by.className('title'));
expect(titleElement.getText()).toEqual('YourEnteredTitle');
});
ここで説明されているように、配列内の要素を見つける必要があります https://github.com/angular/protractor/issues/877
var items = element.all(by.repeater('userGroup in userGroups')).filter(function(item) {
return item.element(by.binding('userGroup.name')).getText().then(function(label) {
return label === 'MyGroupName';
});
});
items.get(0).element(by.css('.buttongochose')).click();
ドキュメントから: https://github.com/angular/protractor/blob/master/docs/locators.md
var clickable = element.all(by.repeater('post in posts')).first().all(by.tagName('td')).first();
さらに優れたソリューション:
expect( $$(by.repeater('post in posts')).get(0).$('.title').getText() ).toBe('Your title');