We have just started implementing a WebdriverIO-mocha-chai framework at work and since I have a Selenium/Java background, it's a little tricky for me to wrap my head around it.
My page objects look like this:
**page.js**
export default class Page {
get title() { return browser.getTitle() };
get header() { return browser.element('.Header') }
get logoutLink() { return browser.element('a.logout') }
open(url) {
browser.windowHandleFullscreen().url(`/#/${url}`);
}
}
**page1.js**
import Page from './page'
import Page2 from './Page2'
class Page1 extends Page {
get element1() { return browser.element('selector1') }
get element2() { return browser.element('selector2') }
clickElement1Page1() {
this.element1.scroll();
this.element1.waitForVisible();
this.element1.click();
return this;
}
}
export default new Page1()
**page2.js**
import Page from './page'
import Page1 from './page1';
class Page2 extends Page {
get element1() { return browser.element('selector1') }
get element2() { return browser.element('selector2') }
get element3() { return browser.element('selector3') }
get element4() { return browser.element('selector4') }
open() {
super.open('page2')
}
clickElement1Page2() {
this.element1.scroll();
this.element1.waitForVisible();
this.element1.click();
return this;
}
fillForm(name, title) {
this.element2.setValue(name);
this.element3.setValue(title);
this.element4.click();
return new Page1();
}
}
export default new Page2()
The difference between this and the advised model on the WebdriverIO site is that I added the return statements, which brings us to the issue I need help with. I want my tests to look as simple as possible, like:
Page2.clickElement1Page2().fillForm("text", "text").clickElement1Page1();
expect(...).to.be.true;
Right now I'm getting a "_page1.default is not a constructor" at line return new Page1()
.
Taking into account that in this paradigm the elements are not initialised in the constructor, is this kind of chaining possible with WebdriverIO? Any suggestions or examples of a solid webdriverIO POM project are highly appreciated. Thanks!
Aucun commentaire:
Enregistrer un commentaire