Protractor find element inside a repeater

匿名 (未验证) 提交于 2019-12-03 01:57:01

问题:

Below is my markup

{{post.title}}       

I'm trying to get the element with the title class.

The code I use to access the repeater is:

postsList = element.all(by.repeater('post in posts')); 

Is there a way to get the element by doing something like the following in jQuery:

var titleText = $("tr:first").find(".title").text(); 

Is there a way of doing something similar to this with protractor?

回答1:

this should work for your example:

element.all(by.repeater('post in posts')).then(function(posts) {    var titleElement = posts[0].element(by.className('title'));    expect(titleElement.getText()).toEqual('YourEnteredTitle'); }); 


回答2:

The answer from nilsK helped me, but didn't work completely. The code below did the trick:

element.all(by.repeater('post in posts')).then(function(posts) {    var titleElement = posts[0].element(by.className('title'));    expect(titleElement.getText()).toEqual('YourEnteredTitle'); }); 


回答3:

you have to find a element inside a array as explained here 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(); 


回答4:

From the docs: 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(); 


回答5:

An even better solution:

expect( $$(by.repeater('post in posts')).get(0).$('.title').getText() ).toBe('Your title');



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