量角器页面对象计数返回不正确

Protractor Page Object count returning incorrectly

我正在尝试使用 Protractor 和 Cucumber 为 Ionic 应用编写一些端到端测试。我遵循了页面对象模式,但出于某种原因,尽管我在等待元素出现,但对 count() 的调用返回了 0。但是,如果我睡一会儿,它就会起作用。这是我的步骤:

Then('my cases should be listed', function (callback) {
  casesPage.isLoaded()
  .then(() => {
    expect(casesPage.numberOfFamilies())
      .to.eventually.equal(20)
      .and.notify(callback);
  })
});

还有我的页面对象

import { browser, $, $$, by, ElementFinder, ElementArrayFinder } from 'protractor';

export class CasesPage {

  listOfFamilies: ElementArrayFinder;

  private initializePromise: Promise<void>;

  async initialize(): Promise<void> {
    if(!this.initializePromise) {
      return this.initializePromise = new Promise<void>(async (resolve) => {
        this.listOfFamilies = $$('ul.families li.family');
        return resolve();
      });
    }
  }

  get() {
    return browser.get('/cases')
  }

  async isLoaded(): Promise<boolean> {
    await this.initialize();
    return this.listOfFamilies.isPresent();
  }

  async numberOfFamilies(): Promise<number> {
    await this.initialize();
    // browser.sleep(3000); Uncommenting this works
    return this.listOfFamilies.count();
  }

}

有什么想法吗?

this.listOfFamilies.count() return 承诺您应该解决的问题。只需在它之前添加 await:

  async numberOfFamilies(): Promise<number> {
    await this.initialize();
    return await this.listOfFamilies.count();
  }