不能红属性'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任何变量并查看你的代码在哪里中断