使用 Protractor 在 ng-repeat 中获取 ng-model in ng-repeat

Get ng-model in ng-repeat in ng-repeat with Protractor

如何使用量角器在 ng-repeat 中获取 ng-repeat 中的 ng-model?

<div ng-repeat="field in master.linker | orderBy:'country.name'">
    <div>
        <p> {{ field.country_name }} </p>

            <label ng-repeat="user in user_list">
                <input type="checkbox" ng-model="selected_user">
                <span ng-bind="user.name"></span>
            </label>

    </div>
</div>

我使用 filter() 检查我的 ng-repeat :

var fields = element.all(by.repeater('field in master.linker'));

fields.filter(function (field) {
    return field.element(by.binding("field.country_name")).getText().then(function (country) {
        return country === "en";
    });
}).then(function (filteredFields) {

    var fields2 = filteredFields[0].element.all(by.repeater('user in user_list'));

    return fields2.filter(function (field2) {
        return field2.element(by.binding('user.name')).getText().then(function (value) {
            return value === user;
        });
    }).then(function (filteredFields) {
        var myuser = filteredFields[0].element(by.model('user_name'));

        self.current_step.expect(input.getAttribute('value')).to.eventually.equal('');

    });

});;

我的控制台出现此错误:

TypeError: filteredFields[0].element.all is not a function

使用.all()代替.element.all()

filteredFields[0].all(by.repeater('user in user_list'));

您还可以使用 first() 来简化事情:

var fields = element.all(by.repeater('field in master.linker'));
var filteredUser = fields.filter(function (field) {
    return field.element(by.binding("field.country_name")).getText().then(function (country) {
        return country === "en";
    });
}).first().all(by.repeater('user in user_list')).filter(function (userField) {
    return userField.element(by.binding('user.name')).getText().then(function (value) {
        return value === user;
    });
}).first();

var myuser = filteredUser.element(by.model('user_name'));
self.current_step.expect(myuser.getAttribute('value')).to.eventually.equal('');

您也可以查看 column() and row() repeater API