我正在尝试使用页面对象模式编写一个简单的测试 - 基于“docs/page-objects”。
我创建了一个描述页面对象的文件,另一个使用此页面对象来测试页面。
//page object
var LoginPage = function() {
this.userInput = browser.driver.findElement(by.id('username'));
this.pwdInput = browser.driver.findElement(by.id('password'));
this.btnEnter = browser.driver.findElement(by.id('btnLogin'));
this.get = function(){
browser.get('http://example.com');
};
this.setUser = function (user){
this.userInput.sendKeys(user);
};
this.setPasswd = function (password) {
this.pwdInput.sendKeys(password);
};
this.clickBtnEnter = function (){
btnEnter.click();
};};
规范文件:
var loginPage = require('./LoginPage.js');
describe('myApp', function() {
it('should save contract config', function (){
loginPage.get();
loginPage.setUser('userid');
loginPage.setPasswd('passwd');
loginPage.clickBtnEnter();
});
});
运行此测试时会显示以下错误: TypeError:对象#没有方法'get' - 在此行:loginPage.get();.
当我在搜索这个问题时,我发现了在Protractor中使用页面对象的各种方法,例如Astrolable。 现在我不确定页面对象的正确用法。
您对我如何修复此测试有任何想法吗?
谢谢你们。
答案 0 :(得分:1)
试试这个:
确保LoginPage.js
文件中包含以下内容
module.exports = LoginPage;
添加缺少的new
关键字
var LoginPage = require('./LoginPage.js');
var loginPage = new LoginPage();
答案 1 :(得分:0)
尝试上述语法后(没有成功)我使用Astrolable重写了页面对象。现在它有效!我的测试看起来像这样:
//pageobject
'use strict';
var env = require('./environment.js')
var LoginPage = function () {
browser.driver.get('http://example.com');
};
LoginPage.prototype = Object.create({}, {
userInput: { get: function() { return browser.driver.findElement(by.id('username'));}},
pwdInput: { get: function() { return browser.driver.findElement(by.id('password'));}},
btnEnter: { get: function() { return browser.driver.findElement(by.id('btnLogin'));}},
setUser: { value: function (loginName) {
this.userInput.sendKeys(loginName);
}},
setPasswd: { value: function (loginPass) {
this.pwdInput.sendKeys(loginPass);
}},
clickBtnEnter: { get: function() { return this.btnEnter.click();}}
});
module.exports = LoginPage;
规格文件:
'use strict';
var loginPage = require('./LoginPage.js');
describe('myApp', function() {
var poLogin = new loginPage();
it('should save contract config', function (){
poLogin.setUser('userid');
poLogin.setPasswd('passwd');
poLogin.clickBtnEnter;
});
});
现在工作正常。 谢谢你回答。