Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS:Class extends值不是函数或null_Javascript_Selenium Webdriver_Ecmascript 6_Webdriver Io - Fatal编程技术网

Javascript JS:Class extends值不是函数或null

Javascript JS:Class extends值不是函数或null,javascript,selenium-webdriver,ecmascript-6,webdriver-io,Javascript,Selenium Webdriver,Ecmascript 6,Webdriver Io,这就是我尝试使用WebDrivero构建登录测试的第一个页面对象的方式 但是我在login.page.js的第3行得到了一个错误error:Class extends value#不是函数或null 我不明白,我做错了什么。。。是否有路径或文件名错误 /tests/specs/login.specs.js var expect = require('chai').expect var LoginPage = require('../pageobjects/login.page') descri

这就是我尝试使用WebDrivero构建登录测试的第一个页面对象的方式

但是我在
login.page.js
的第3行得到了一个错误
error:Class extends value#不是函数或null

我不明白,我做错了什么。。。是否有路径或文件名错误

/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!')
  })
})
'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()
module.exports = LoginPage;
var LoginPage = new (require('../pageobjects/login.page'))();
/tests/pageobjects/page

'use strict'
class Page {
  constructor() {
    this.title = 'My Page'
  }
  open(path) {
    browser.url('/' + path)
  }
}
module.exports = new Page()
module.exports = Page;
/tests/pageobjects/login.page.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!')
  })
})
'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()
module.exports = LoginPage;
var LoginPage = new (require('../pageobjects/login.page'))();
试一试

然后进入login.page

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

正如Gerardo所指出的,您正在导出类的一个实例,并注意类本身。尝试以下更改:

/tests/pageobjects/page

'use strict'
class Page {
  constructor() {
    this.title = 'My Page'
  }
  open(path) {
    browser.url('/' + path)
  }
}
module.exports = new Page()
module.exports = Page;
/tests/pageobjects/login.page.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!')
  })
})
'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()
module.exports = LoginPage;
var LoginPage = new (require('../pageobjects/login.page'))();
/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!')
  })
})
'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()
module.exports = LoginPage;
var LoginPage = new (require('../pageobjects/login.page'))();


你导出的是一个类的实例,而不是一个类本身。我看不出有什么意义……试试
module.exports=Page
,然后我会得到
错误:没有“new”
就不能调用类构造函数,我猜你是在
login.specs.js
中得到的,因为你还需要更改
module.exports=new LoginPage()
module.exports=LoginPage
并在
login.specs.js
中创建
LoginPage
的实例。先生,或者我们是否可以在构造函数中实例化该类。。。类{constructor(){this.instanceLoginPage=new LoginPage();}