量角器 - 页面对象:失败:不是函数
Protractor - Page object: Failed: is not a function
我正在使用 Protractor 并创建一个页面对象。
这是我的页面对象:
'use strict';
var CreateAgent = function () {
this.agentEmail = element(by.model('agent.email'));
this.janrainConsoleAgent = by.xpath(".//*[@value='ccp_agent']");
this.janrainConsoleAgentManager = by.xpath(".//* .[@value='ccp_agent_manager']");
this.saveButton = by.className('md-primary md-raised md-button md-ink-ripple');
this.addEmail = function(email){
this.agentEmail.sendKeys(email);
};
this.selectRole = function(role){
switch(role){
case 'ccp agent':
this.janrainConsoleAgent.click();
case 'ccp agent manager':
this.janrainConsoleAgentManager.click();
default:
break;
}
};
this.saveAgent = function(){
this.saveButton.click();
};
};
module.exports = CreateAgent;
此函数在规范中调用
这是规范:
var createAgent = require('../page/create_agent_page');
describe('Protractor Demo Janrain - Create Agent', function(){
it('should fill out information to create agent', function(){
createAgent.addEmail('jburquez+auto001@janrain.com');
browser.sleep(3000);
createAgent.selectRole('ccp agent manage');
browser.sleep(3000);
createAgent.saveAgent();
browser.sleep(7000);
});
});
但是当我执行测试时出现错误:
Failures:
1) Protractor Demo Janrain - Create Agent should fill out information to create agent
Message:
Failed: createAgent.addEmail is not a function
Stack:
TypeError: createAgent.addEmail is not a function
我不确定页面对象或其他地方是否缺少某些内容。
希望你能帮助我,谢谢。
将 module.exports = CreateAgent;
更改为 module.exports = new CreateAgent();
。您需要创建一个新的 CreateAgent 函数实例才能访问函数内的所有方法。
在您的规范文件中创建一个实例。
例如:
var createAgent = new CreateAgent();
并使用以下函数访问函数:
createAgent.addEmail();
导出页面对象 module.exports = new CreateAgent(); 不是最佳实践 作为对象即使您不使用它(示例-执行其他测试规范时)
最佳方法是: 仅导出对象函数 module.exports = CreateAgent; 并在 Spec() 上创建一个对象,其中你需要那个页面对象。请遵循以下代码:
var createAgent = require('../page/create_agent_page');
describe('Protractor Demo Janrain - Create Agent', function(){
var createAgenPageObj;
beforeAll(function(){
//create an object for page
createAgenPageObj=new createAgent ();
});
it('should fill out information to create agent', function(){
});
})
我正在使用 Protractor 并创建一个页面对象。
这是我的页面对象:
'use strict';
var CreateAgent = function () {
this.agentEmail = element(by.model('agent.email'));
this.janrainConsoleAgent = by.xpath(".//*[@value='ccp_agent']");
this.janrainConsoleAgentManager = by.xpath(".//* .[@value='ccp_agent_manager']");
this.saveButton = by.className('md-primary md-raised md-button md-ink-ripple');
this.addEmail = function(email){
this.agentEmail.sendKeys(email);
};
this.selectRole = function(role){
switch(role){
case 'ccp agent':
this.janrainConsoleAgent.click();
case 'ccp agent manager':
this.janrainConsoleAgentManager.click();
default:
break;
}
};
this.saveAgent = function(){
this.saveButton.click();
};
};
module.exports = CreateAgent;
此函数在规范中调用
这是规范:
var createAgent = require('../page/create_agent_page');
describe('Protractor Demo Janrain - Create Agent', function(){
it('should fill out information to create agent', function(){
createAgent.addEmail('jburquez+auto001@janrain.com');
browser.sleep(3000);
createAgent.selectRole('ccp agent manage');
browser.sleep(3000);
createAgent.saveAgent();
browser.sleep(7000);
});
});
但是当我执行测试时出现错误:
Failures:
1) Protractor Demo Janrain - Create Agent should fill out information to create agent
Message:
Failed: createAgent.addEmail is not a function
Stack:
TypeError: createAgent.addEmail is not a function
我不确定页面对象或其他地方是否缺少某些内容。
希望你能帮助我,谢谢。
将 module.exports = CreateAgent;
更改为 module.exports = new CreateAgent();
。您需要创建一个新的 CreateAgent 函数实例才能访问函数内的所有方法。
在您的规范文件中创建一个实例。
例如:
var createAgent = new CreateAgent();
并使用以下函数访问函数:
createAgent.addEmail();
导出页面对象 module.exports = new CreateAgent(); 不是最佳实践 作为对象即使您不使用它(示例-执行其他测试规范时)
最佳方法是: 仅导出对象函数 module.exports = CreateAgent; 并在 Spec() 上创建一个对象,其中你需要那个页面对象。请遵循以下代码:
var createAgent = require('../page/create_agent_page');
describe('Protractor Demo Janrain - Create Agent', function(){
var createAgenPageObj;
beforeAll(function(){
//create an object for page
createAgenPageObj=new createAgent ();
});
it('should fill out information to create agent', function(){
});
})