量角器 - 页面对象:失败:不是函数

时间:2017-03-23 19:55:04

标签: javascript automation protractor pageobjects

我正在使用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

我不确定页面对象或其他地方是否缺少某些内容。

希望你能帮助我,谢谢你。

3 个答案:

答案 0 :(得分:3)

module.exports = CreateAgent;更改为module.exports = new CreateAgent();。您需要创建一个新的CreateAgent函数实例来访问函数内的所有方法。

答案 1 :(得分:3)

导出页面 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(){

   });
})

答案 2 :(得分:0)

在spec文件中创建一个实例。

例如:

var createAgent = new CreateAgent();

使用以下方式访问函数:

createAgent.addEmail();