Javascript JS:Class extends值不是函数或null
这就是我尝试使用WebDrivero构建登录测试的第一个页面对象的方式 但是我在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
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();}