不能红属性'getText'量角器
Cannot red property 'getText' protractor
我试图在一个循环中执行一个循环并得到 Cannot red property 'getText' of undefined
错误。
这是我的代码:
element.all(by.className('col-md-4 ng-scope')).then(function(content) {
element.all(by.className('chart-small-titles dashboard-alignment ng-binding'))
.then(function(items) {
for(var i = 0; i<=content.length; i++) {
items[i].getText().then(function(text) {
expect(text).toBe(arrayTitle[i]);
});
}
});
element.all(by.className('mf-btn-invisible col-md-12 ng-scope'))
.then(function(itemsText) {
for(var i=0; i<=content.length; i++) {
for(var x = 0; x<=arrayContent.length; x++) {
itemsText[i].getText().then(function(textContent) {
expect(textContent).toBe(arrayContent[x]);
});
}
}
});
});
我在 .getText()
中使用 .then
,所以我不知道会发生什么。
您现在的主要问题是您编写了 30 行代码,并且一次调试了所有代码。关于可能的问题可能有 1000 个。出于这个原因,没有人会帮助你,因为我不想浪费我的时间,让自己盲目猜测。但是如果你重新组织你的代码,这样你就可以一行一行地调试它们,那么每一行可能只有几个问题。
话虽如此,请停止使用回调,我看得出您并不完全理解它们的作用。而是开始使用 async/await
。看看它是多么容易...您的问题代码将如下所示
// define elementFinders
let content = element.all(by.className('col-md-4 ng-scope'));
let items = element.all(by.className('chart-small-titles dashboard-alignment ng-binding'));
let itemsText = element.all(by.className('mf-btn-invisible col-md-12 ng-scope'));
// get element quantity
let contentCount = await content.count();
let itemsTextCount = await itemsText.count();
// iterate
for(var i = 0; i<contentCount; i++) {
// get text
let text = await items.get(i).getText();
// assert
expect(text).toBe(arrayTitle[i]);
}
// iterate
for(var i=0; i<contentCount; i++) {
for(var x = 0; x<itemsTextCount; x++) {
// get text
let text = await itemsText.get(i).getText();
// assert
expect(text).toBe(arrayContent[x]);
}
}
这样你可以console.log
任何变量并查看你的代码在哪里中断
我试图在一个循环中执行一个循环并得到 Cannot red property 'getText' of undefined
错误。
这是我的代码:
element.all(by.className('col-md-4 ng-scope')).then(function(content) {
element.all(by.className('chart-small-titles dashboard-alignment ng-binding'))
.then(function(items) {
for(var i = 0; i<=content.length; i++) {
items[i].getText().then(function(text) {
expect(text).toBe(arrayTitle[i]);
});
}
});
element.all(by.className('mf-btn-invisible col-md-12 ng-scope'))
.then(function(itemsText) {
for(var i=0; i<=content.length; i++) {
for(var x = 0; x<=arrayContent.length; x++) {
itemsText[i].getText().then(function(textContent) {
expect(textContent).toBe(arrayContent[x]);
});
}
}
});
});
我在 .getText()
中使用 .then
,所以我不知道会发生什么。
您现在的主要问题是您编写了 30 行代码,并且一次调试了所有代码。关于可能的问题可能有 1000 个。出于这个原因,没有人会帮助你,因为我不想浪费我的时间,让自己盲目猜测。但是如果你重新组织你的代码,这样你就可以一行一行地调试它们,那么每一行可能只有几个问题。
话虽如此,请停止使用回调,我看得出您并不完全理解它们的作用。而是开始使用 async/await
。看看它是多么容易...您的问题代码将如下所示
// define elementFinders
let content = element.all(by.className('col-md-4 ng-scope'));
let items = element.all(by.className('chart-small-titles dashboard-alignment ng-binding'));
let itemsText = element.all(by.className('mf-btn-invisible col-md-12 ng-scope'));
// get element quantity
let contentCount = await content.count();
let itemsTextCount = await itemsText.count();
// iterate
for(var i = 0; i<contentCount; i++) {
// get text
let text = await items.get(i).getText();
// assert
expect(text).toBe(arrayTitle[i]);
}
// iterate
for(var i=0; i<contentCount; i++) {
for(var x = 0; x<itemsTextCount; x++) {
// get text
let text = await itemsText.get(i).getText();
// assert
expect(text).toBe(arrayContent[x]);
}
}
这样你可以console.log
任何变量并查看你的代码在哪里中断