This is my Page Object class
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");
}
}
this is my "it" block. This is the starting point of the program.
it("Click all Submenues 3", async () => {
browser.waitForAngularEnabled(true);
let topMenu: TopMenu = await new TopMenu();
console.log("ddddddddddddddd");
}
My output is like this
**TopMenu constructor called
aaaaaaaaaa
bbbbbbbbbb
ddddddddddddddd
ccccccccc
as you can see from my above output "console.log("ddddddddddddddd")" is called BEFORE this line resolved "this.menuItems = await this.topbarMenu.all(by.xpath("./li"));
within TopMenu class"
is it possible to omit that ?
I want to execute any line I right within "it block" AFTER my "TopMenu" gets fully created.
How to control the flow like that ?