2017-03-23 13 views
1

私は分度器で作業しており、ページオブジェクトを作成しています。分度器 - ページオブジェクト:失敗:関数ではありません

これは私のページオブジェクトである:

'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('[email protected]'); 
     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 

ページオブジェクトや他の場所に何かがないかどうか分かりません。

私に感謝してくれてありがとうと思います。

+0

のPageObjectパターン: 'https://でwww.thoughtworks.com /洞察/ブログ/使用して、ページオブジェクト-克服 - 分度器 - shortcomings' – Barney

答えて

2

変更module.exports = CreateAgent;からmodule.exports = new CreateAgent();です。関数内のすべてのメソッドにアクセスするには、CreateAgent関数の新しいインスタンスを作成する必要があります。

+0

いや、それが問題だった、ありがとう@Sudharsan Selvaraj – burq24

0

スペックファイルにインスタンスを作成します。例えば

var createAgent = new CreateAgent(); 

およびアクセス機能を使用して:

createAgent.addEmail(); 
2

ページのオブジェクトをエクスポートするmodule.exportsは=新しいCreateAgentを(); ;エクスポート機能のみをオブジェクトmodule.exportsは= CreateAgent:NOT(他のテスト仕様を実行する場合の例 - )も、あなたがそれを使用していない生きているオブジェクトなどのベストプラクティス

BEST WAYはです。を開き、そのページオブジェクトが必要な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(){ 

    }); 
}) 
関連する問題