(я видел это обсуждение SO, но не знал, как применить его к мой случай, поэтому я задаю новый вопрос. Надеюсь, это не дубликат)
Я тестирую форму, написанную на Angular, используя Protractor с Cucumber.js.
Итак, что я хотел бы сделать, это сказать Protractor, чтобы он щелкнул заголовок поля (который является ссылкой), затем, когда это поле появится, введите в него некоторый текст, а затем перейдите к заголовку следующего поля, и так далее.
Вот мой шаг в Cucumber:
When I fill the form with the following data
| field | content |
| First Name | John |
| Last Name | Doe |
| Address | Some test address |
# and so forth
Вот нерешительная попытка определения шага:
this.When(/^I fill the form with the following data$/, function (table, callback) {
data = table.hashes();
# that gives me an array of objects such as this one:
# [ { field: 'First Name', content: 'John' },...]
for (var i = 0; i < data.length; i++){
var el = element(by.cssContainingText('#my-form a', data[i].field));
el.click().then(function(){
var fieldEl = el.element(by.xpath("../.."))
.element(by.css('textarea'));
fieldEl.sendKeys(data[i].content);
});
}
};
callback();
});
Но это, конечно, не работает, потому что еще до того, как Protractor успеет кликнуть по названию поля и ввести в поле необходимые данные, вызывается callback-функция, и Cucumber переходит к следующему шагу.
Итак, мой вопрос: как я могу, используя Protractor с Cucumber.js, написать шаг для вставки данных, определенных в таблице Cucumber, в поля формы? Возможно ли это с помощью цикла for?