我正在尝试根据产品清单从产品清单中选择产品。
我想要做的是“如果列表中的某个项目的标题与”鸡胸肉(200g)相匹配“,请点击按钮。
有人知道如何在量角器中写这个吗?
我正在努力弄清楚什么是返回,什么是承诺,什么不是,以及如何在做任何事情之前等到我有结果。
dom结构看起来像
<li ng-repeat="item in filteredItems" class="ng-scope">
<div class="product">
<h3 class="product-title text-uppercase ng-binding" ng-bind="item.name">Chicken Breast (200g)</h3>
<div class="pad-top-10">
<button class="btn btn-default btn-xs" type="button" ng-click="addItem(item)">
<span class="product-add-label">Add Item</span>
</button>
</div>
</div>
</li>
到目前为止我已经尝试过了:
this.Given(/^I can see "([^"]*)" on the page$/, function (productName, done) {
element.all(by.repeater('item in filteredItems')).then(function (products) {
for(var i = 0; i < products.length; i++){
var title = products[i].element(by.css('.product-title'));
title.getText().then(function (text) {
if (text.toLowerCase() === productName.toLowerCase()) {
console.log(text);
// products[i] shows as undefined
console.log(products[i]);
done();
}
})
}
});
});
答案 0 :(得分:0)
这是不可测试的,但可能有所帮助:
git ls-files --modified
答案 1 :(得分:0)
经过进一步调查和phylax建议的一些代码后,我发现这是最好的解决方案:
this.Given(/^I can see "([^"]*)" on the page$/, function (productName, done) {
element.all(by.repeater('item in filteredItems')).then(function (products) {
for (var i = 0; i < products.length; i++) {
(function () {
var title = products[i].element(by.css('.product-title'));
var product = products[i];
title.getText().then(function (text) {
if (text.toLowerCase() === productName.toLowerCase()) {
console.log(text);
console.log(product);
done();
}
})
})();
}
});
});
你可以看到我添加了一个(function(){}());包装器,所以克服Webstorm抛出的“可以从闭包中访问Mutable变量”的错误,我已经在其中初始化了产品。