量角器页面对象计数返回不正确
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();
}
我正在尝试使用 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();
}