量角器页面对象-TypeError:Object#& lt; Object& gt;没有方法' methodName'
我正在尝试使用页面对象模式编写一个简单的测试-基于'文档/页面对象'.
I'm trying to write a simple test using page objects pattern - based on the 'docs/page-objects'.
我创建了一个描述页面对象的文件,并使用该页面对象来测试页面.
I created a file describing the page object and other using this page object to test a page.
//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();.
The following error is shown when I run this test: TypeError: Object # has no method 'get' - at this line: loginPage.get();.
当我寻找这个问题时,我发现了各种在量角器中使用页面对象的方法,例如 Astrolable .现在,我不确定页面对象的正确用法.
When I was searching for this problem I found various approaches about using page objects in Protractor, such as Astrolable. Now I am not sure about the correct usage of page objects.
您对我如何解决此测试有任何想法吗?
Do you have any ideas about how I can fix this test?
谢谢你们.
尝试了上述语法(没有成功)后,我使用可.现在可以了!我的测试如下:
After trying the above syntax (no success) I rewrote the page object using the Astrolable. Now it works! My test looks like this:
//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;
});
});
现在一切正常.感谢您的回答.
Now it is working fine. Thanks for answering.