(我看过这个 SO 讨论,但不知道如何将它应用到我的案例中,所以我问了一个新问题。希望它不是重复的)
我正在使用 Protractor 和 Cucumber.js 测试用 Angular 编写的表单。
所以我想做的是告诉量角器去点击一个字段的标题(这是一个链接)然后,当那个字段出现时,在里面输入一些文本,然后转到下一个字段的标题,等等。
这是我在 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 有时间单击字段名称并将必要的数据输入字段之前,回调函数就被调用,Cucumber 进入下一步。
所以我的问题是,如何使用 Protractor 和 Cucumber.js 编写将 Cucumber 表中定义的数据插入表单字段的步骤?使用 for 循环是否可行?