这是我的Page Object类
export class TopMenu {
topbarMenu: ElementFinder;
menuItems;
numberofMenuItems: number;
constructor() {
console.log("TopMenu constructor called");
this.setMenus();
}
async setMenus() {
console.log("aaaaaaaaaa");
this.topbarMenu = await element(by.css("ul[class*='topbar-menu']"));
console.log("bbbbbbbbbb");
this.menuItems = await this.topbarMenu.all(by.xpath("./li"));
console.log("ccccccccc");
}
}
这是我的“它”块。这是该计划的起点。
it("Click all Submenues 3", async () => {
browser.waitForAngularEnabled(true);
let topMenu: TopMenu = await new TopMenu();
console.log("ddddddddddddddd");
}
我的输出是这样的
**TopMenu constructor called
aaaaaaaaaa
bbbbbbbbbb
ddddddddddddddd
ccccccccc
正如你从上面的输出中看到的那样“console.log(”ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd)
有可能省略吗?
我希望在我的“TopMenu”完全创建之后,在“它阻止”内执行任何一行。
如何控制流量?
this.menuItems = await this.topbarMenu.all(by.xpath("./li"));
ing一个构造函数,除非你构造一个Promise(你不是)没有意义,因为构造函数不能返回一个Promise(创建一个Promise时除外)
你可能想要做类似的事情
await
现在你的export class TopMenu {
topbarMenu: ElementFinder;
menuItems;
numberofMenuItems: number;
somePromise;
constructor() {
console.log("TopMenu constructor called");
this.somePromise = this.setMenus();
}
async setMenus() {
console.log("aaaaaaaaaa");
this.topbarMenu = await element(by.css("ul[class*='topbar-menu']"));
console.log("bbbbbbbbbb");
this.menuItems = await this.topbarMenu.all(by.xpath("./li"));
console.log("ccccccccc");
}
}
it("Click all Submenues 3", async () => {
browser.waitForAngularEnabled(true);
let topMenu: TopMenu = new TopMenu();
await topMenu.somePromise;
console.log("ddddddddddddddd");
}
区块将等待it
返回的承诺
注意:基于你得到的输出,我可以肯定地说setMenus
不是异步的(好吧,它不会返回Promise,它可能有异步,但它根本不是“暴露”) - 因此你不需要element(...