Javascript 量角器如何测试最后一项';上榜
在我的应用程序中,我有一个项目列表,我可以向其中添加新项目,我可以检查列表是否有新项目,现在我想测试新项目是否具有“nuovo”类,这是我的测试用例:Javascript 量角器如何测试最后一项';上榜,javascript,angularjs,protractor,Javascript,Angularjs,Protractor,在我的应用程序中,我有一个项目列表,我可以向其中添加新项目,我可以检查列表是否有新项目,现在我想测试新项目是否具有“nuovo”类,这是我的测试用例: it("should add an item to the address list with class 'nuovo'",function(){ ptor.findElements(protractor.By.repeater('a in customer.LIVES_IN')).then(function(arr) {
it("should add an item to the address list with class 'nuovo'",function(){
ptor.findElements(protractor.By.repeater('a in customer.LIVES_IN')).then(function(arr) {
expect(arr.length).toEqual(2);
var initial_length = arr.length;
// set values to new address
ptor.findElement(protractor.By.model('street')).sendKeys('via');
ptor.findElement(protractor.By.model('city')).sendKeys('G');
ptor.findElement(protractor.By.model('number')).sendKeys('xx');
ptor.findElement(protractor.By.model('use')).sendKeys('n');
element(by.id('addAddressButton')).click();
//check one address more
ptor.findElements(protractor.By.repeater('a in customer.LIVES_IN')).then(function(arr) {
expect(arr.length).toEqual(initial_length+1);
var inserted_item = element(arr[arr.length-1]) //get the last element, the just inserted one
//console.log(inserted_item);
var lastRow = element(by.repeater('a in customer.LIVES_IN').last);
expect(lastRow).toHaveClass('nuovo');
})
});
})
it("should add an item to the address list with class 'nuovo'", function () {
ptor.findElements(protractor.By.repeater('a in customer.LIVES_IN')).then(function (arr) {
expect(arr.length).toEqual(2);
var initial_length = arr.length;
// set values to new address
ptor.findElement(protractor.By.model('street')).sendKeys('via');
ptor.findElement(protractor.By.model('city')).sendKeys('G');
ptor.findElement(protractor.By.model('number')).sendKeys('');
ptor.findElement(protractor.By.model('use')).sendKeys('');
element(by.id('addAddressButton')).click();
//check one address more
ptor.findElements(protractor.By.repeater('a in customer.LIVES_IN')).then(function (arr) {
expect(arr.length).toEqual(initial_length + 1);
var inserted_item = element(arr[arr.length - 1]) //get the last element, the just inserted one
//console.log(inserted_item);
var lastRow = arr[2];
var attributes = '';
//console.log(
arr[2].getAttribute('className').then(function (o) {
// console.log('then');
//console.log(o)
attributes = o;
//console.log(attributes);
var pos = attributes.indexOf('nuovo'); // if != -1 nuovo is in the attribute's list
//console.log(attributes.indexOf('nuovo'));
expect(pos != -1).toBe(true);
});
});
});
});
我得到这个错误:
Failures:
1) E2E: main page should add an item to the address list with class 'nuovo'
Message:
TypeError: Object [object Object] has no method 'toHaveClass'
Stacktrace:
Error
at null.<anonymous> (/home/arpho/Projects/neo4Scrum/test/e2e/addAddress_spec.js:19:1)
at Object.<anonymous> (/home/arpho/Projects/neo4Scrum/test/e2e/addAddress_spec.js:2:1)
At async task:
TypeError: Object [object Object] has no method 'toHaveClass'
at /home/arpho/Projects/neo4Scrum/test/e2e/addAddress_spec.js:38:29
==== async task ====
WebDriver.call(function)
at Object.findElementsOverride (/home/arpho/Projects/neo4Scrum/node_modules/protractor/lib/locators.js:273:21)
at Protractor.findElements (/home/arpho/Projects/neo4Scrum/node_modules/protractor/lib/protractor.js:765:21)
at /home/arpho/Projects/neo4Scrum/test/e2e/addAddress_spec.js:31:14
==== async task ====
asynchronous test function
Finished in 20.703 seconds
故障:
1) E2E:主页应向地址列表中添加一个类为“nuovo”的项目
信息:
TypeError:对象[Object]没有方法“toHaveClass”
堆栈跟踪:
错误
在空。(/home/arpho/Projects/neo4Scrum/test/e2e/addAddress_spec.js:19:1)
反对。(/home/arpho/Projects/neo4Scrum/test/e2e/addAddress_spec.js:2:1)
异步任务时:
TypeError:对象[Object]没有方法“toHaveClass”
at/home/arpho/Projects/neo4Scrum/test/e2e/addAddress_spec.js:38:29
==异步任务====
WebDriver.call(函数)
在Object.findelementsoferride(/home/arpho/Projects/neo4Scrum/node_modules/dragrator/lib/locators.js:273:21)
位于gragrator.findElements(/home/arpho/Projects/neo4Scrum/node_modules/gragrator/lib/gragrator.js:765:21)
at/home/arpho/Projects/neo4Scrum/test/e2e/addAddress_spec.js:31:14
==异步任务====
异步测试函数
以20.703秒完成
我会这样做:
expect(lastRow.getAttribute('className')).toMatch('nuovo');
我做了一些肮脏的事情,但现在我的测试似乎奏效了: 这是我的新测试用例:
it("should add an item to the address list with class 'nuovo'",function(){
ptor.findElements(protractor.By.repeater('a in customer.LIVES_IN')).then(function(arr) {
expect(arr.length).toEqual(2);
var initial_length = arr.length;
// set values to new address
ptor.findElement(protractor.By.model('street')).sendKeys('via');
ptor.findElement(protractor.By.model('city')).sendKeys('G');
ptor.findElement(protractor.By.model('number')).sendKeys('xx');
ptor.findElement(protractor.By.model('use')).sendKeys('n');
element(by.id('addAddressButton')).click();
//check one address more
ptor.findElements(protractor.By.repeater('a in customer.LIVES_IN')).then(function(arr) {
expect(arr.length).toEqual(initial_length+1);
var inserted_item = element(arr[arr.length-1]) //get the last element, the just inserted one
//console.log(inserted_item);
var lastRow = element(by.repeater('a in customer.LIVES_IN').last);
expect(lastRow).toHaveClass('nuovo');
})
});
})
it("should add an item to the address list with class 'nuovo'", function () {
ptor.findElements(protractor.By.repeater('a in customer.LIVES_IN')).then(function (arr) {
expect(arr.length).toEqual(2);
var initial_length = arr.length;
// set values to new address
ptor.findElement(protractor.By.model('street')).sendKeys('via');
ptor.findElement(protractor.By.model('city')).sendKeys('G');
ptor.findElement(protractor.By.model('number')).sendKeys('');
ptor.findElement(protractor.By.model('use')).sendKeys('');
element(by.id('addAddressButton')).click();
//check one address more
ptor.findElements(protractor.By.repeater('a in customer.LIVES_IN')).then(function (arr) {
expect(arr.length).toEqual(initial_length + 1);
var inserted_item = element(arr[arr.length - 1]) //get the last element, the just inserted one
//console.log(inserted_item);
var lastRow = arr[2];
var attributes = '';
//console.log(
arr[2].getAttribute('className').then(function (o) {
// console.log('then');
//console.log(o)
attributes = o;
//console.log(attributes);
var pos = attributes.indexOf('nuovo'); // if != -1 nuovo is in the attribute's list
//console.log(attributes.indexOf('nuovo'));
expect(pos != -1).toBe(true);
});
});
});
});
谢谢,现在我得到了以下信息:TypeError:无法读取Undefine的属性'findElementsOverride',我认为我的错误是我将expect放在了外部,因此它无法工作,因为它是异步的。这是有道理的;)如果现在问题解决了,你应该接受答案。如果你考虑你原来的问题,如果你认为它更完整,就如你所愿。