简单javascript增量不';不行?(实际上,量角器问题不是javascript)
简单JavaScript计数器不工作 我在量角器(角度测试框架)中使用JavaScript,但我认为这不是量角器的问题,而是JavaScript的问题 我想我可以做到这一点:(伪代码实际代码如下) 但即使有匹配的值,计数器也不会增长。 实际代码为:简单javascript增量不';不行?(实际上,量角器问题不是javascript),javascript,angularjs,protractor,Javascript,Angularjs,Protractor,简单JavaScript计数器不工作 我在量角器(角度测试框架)中使用JavaScript,但我认为这不是量角器的问题,而是JavaScript的问题 我想我可以做到这一点:(伪代码实际代码如下) 但即使有匹配的值,计数器也不会增长。 实际代码为: 'use strict'; describe('list page ', function () { it('should list page', function() { var counter = 0;
'use strict';
describe('list page ', function () {
it('should list page', function() {
var counter = 0;
element.all(by.repeater('page in pages')).each(function (page) {
element.all(by.repeater('item in items')).each(function (item) {
if (item.getText() == ("A+")) {
counter++;
}
})
})
})
})
计数器始终为0。你看到这里的问题了吗?
谢谢大家! 首先,您需要修复丢失的右括号
foreach
应该只是for
。在我们的for
循环中,我们说:smailitems[item]
而不仅仅是item
。外环也一样。最后,我们不想使用函数
,这定义了一个新函数,它没有被调用,所以我们不需要它:
for (smallitems in bigitems) {
for (item in bigitems[smallitems]) {
if(bigitems[smallitems][item] == "somevalue"){ counter++; }
}
}
item.getText()
是一个webdriver承诺[Object Object],因此它永远不会==“a+”
不使用expect
时,您需要遵守承诺。之所以expect(item.getText()).toEqual(“A+”)
可以工作,是因为expect
为您解析承诺,并在本例中执行与“A+”的字符串比较
回到手头的问题,您似乎正在尝试计数,以实现对总计数的预期:
describe('count on filtered elements', function() {
// page objects
var pagesRepElms = element.all(by.repeater('page in pages'));
var itemsLocator = by.repeater('item in items');
// since Protractor 1.3 more interesting page objects can be stored
var aPlusElms = pagesRepElms.all(itemsLocator).filter(function(item) {
return item.getText().then(function(text) {
return text === 'A+';
});
});
it('gathers and performs the count expectation in 1 line', function() {
// modify 5 with your expected count
expect(aPlusElms.count()).toEqual(5);
});
});
您是否通过
alert
或console.log
检查增量部分是否已实际执行?foreach
错误。JavaScript中的结构是(对象中的var x)。你把它和myArray.forEach(函数(d){/*dosomething*/})
混淆了if
和forEach
->的结束括号。哇,对不起。我在做伪编码。(至少对于第一个),我相信其中包含与下面相同的逻辑。奇怪的是,底部的那个从来不会增加计数器。只是修正了,当我说smallitems[item]
时,我应该说bigtimes[smallitems][item]
。谢谢你给我指明了正确的方法。至于量角器,它不接受你跟我玩的逻辑。我在寻找背后的逻辑,但没有成功。它似乎在这把小提琴中工作:。注意我没有说var counter=0代码>以上。我检查到项目之间确实存在匹配的元素(该项目。getText()==(“A+”)变为true)。我现在没有时间尝试。但越来越强烈的感觉就是这样!。我可以问一下您在哪里发现“//如果您想在it()规格之间保持状态,需要在这里找到它吗”?有没有我遗漏的文档:)非常感谢。这不是文档中的内容,而是Jasmine在承诺之外的范围和期望方面的工作方式。我已将答案简化为最佳解决方案,祝您好运;)
describe('count on filtered elements', function() {
// page objects
var pagesRepElms = element.all(by.repeater('page in pages'));
var itemsLocator = by.repeater('item in items');
// since Protractor 1.3 more interesting page objects can be stored
var aPlusElms = pagesRepElms.all(itemsLocator).filter(function(item) {
return item.getText().then(function(text) {
return text === 'A+';
});
});
it('gathers and performs the count expectation in 1 line', function() {
// modify 5 with your expected count
expect(aPlusElms.count()).toEqual(5);
});
});