我正在尝试使用WebdriverIO Docs:
中定义的语法定义PageObject父页面
TestXXXActiveProfilesResolver
子页面对象
//page.js
export default class Page {
constructor() {
this.title = 'My Page';
}
open(path) {
browser.url(path);
}
}
然后当我调用Login Page的打开方法时:
// login.page.js
import Page from './page';
class LoginPage extends Page {
open() {
super.open('/login');
}
}
export default new LoginPage();
我得到const LoginPage = require('../../pages/login.page');
LoginPage.open();
TypeError:
解决方法
我可以通过使用TypeError: LoginPage.open is not a function
[chrome #0-0] at World.module.exports ...
[chrome #0-0] at Promise (<anonymous>)
[chrome #0-0] at F (/.../node_modules/core-js/library/modules/_export.js:35:28)
而不是class关键字(如上面链接的文档中所述)重写我的PageObjects来解决此问题。
我使用class关键字并不重要,但我不想知道为什么会失败。如果很明显为什么这不起作用,请原谅我。我是JS的新手。
答案 0 :(得分:1)
我认为你在这里混合使用ES6和CommonJS语法。更改您的测试以使用ES6语法,它应该按预期开始工作。
import LoginPage from '../../pages/login.page';
describe('login tests', () => {
beforeAll(() => {
LoginPage.open();
});
it('should do something', () => {
//do something
});
})
答案 1 :(得分:0)
我发现这对我有用
http://gelionprime.ml/2017/10/page-object-pattern-webdriverio/
<强> PARENT 强>
//page.js
class Page {
constructor() {
this.title = 'My Page';
}
open(path) {
browser.url(path);
}
}
module.exports = Page;
儿童强>
// login.page.js
import Page from './page';
class LoginPage extends Page {
open() {
super.open('/login');
}
}
module.exports = new LoginPage();
使用页面对象测试规范文件
const LoginPage = require('./login.page.js');
describe('test', () => {
it('can open', () => {
LoginPage.open();
});
});