JS:类扩展值不是函数或null

时间:2017-07-14 22:43:58

标签: javascript selenium-webdriver ecmascript-6 webdriver-io

这就是我正在尝试使用WebdriverIO构建我的第一个页面对象以进行登录测试

但我在ERROR: Class extends value #<Page> is not a function or null第3行收到错误login.page.js

我没有看到,我做错了什么......有没有错误的路径或文件名?

/tests/specs/login.specs.js

var expect = require('chai').expect
var LoginPage = require('../pageobjects/login.page')

describe('login form', function () {
  it('should deny access with wrong creds', function () {
    LoginPage.open()
    LoginPage.username.setValue('foo')
    LoginPage.password.setValue('bar')
    LoginPage.submit()
    expect(LoginPage.flash.getText()).to.contain('Your username is invalid!')
  })
})

/测试/ pageobjects /页

'use strict'
class Page {
  constructor() {
    this.title = 'My Page'
  }
  open(path) {
    browser.url('/' + path)
  }
}
module.exports = new Page()

/tests/pageobjects/login.page.js

'use strict'
var Page = require('./page')
class LoginPage extends Page {
  get username () { return browser.element('#username') }
  get password () { return browser.element('#password') }
  get form () { return browser.element('#login') }
  get flash () { return browser.element('#flash') }

  open () {
    super.open('login')
  }

  submit () {
    this.form.submitForm()
  }
}
module.exports = new LoginPage()

2 个答案:

答案 0 :(得分:2)

正如Gerardo所指出的那样,你要导出一个类的实例并注意类本身。尝试这些更改:

<强> /测试/ pageobjects /页

module.exports = Page;

<强> /tests/pageobjects/login.page.js

module.exports = LoginPage;

<强> /tests/specs/login.specs.js

var LoginPage = new (require('../pageobjects/login.page'))();

var LoginPage = require('../pageobjects/login.page');
var instanceLoginPage = new LoginPage();

答案 1 :(得分:1)

尝试

module.exports.Page = Page

然后在login.page

var Page = require('./page.js').Page