2017-03-23 3 views
1

Ich arbeite mit Winkelmesser und ich erstelle ein Seitenobjekt.Winkelmesser - Seitenobjekt: Fehlgeschlagen: ist keine Funktion

Dies ist meine Seite Objekt:

'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; 

Diese Funktionen in einem spec

nennend

Hier ist die Spezifikation:

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); 

    }); 
}); 

aber wenn ich meinen Test ausführen gibt mir ein Fehler:

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 

Ich bin mir nicht sicher, ob etwas im Seitenobjekt oder an anderer Stelle fehlt.

Hoffe, du kannst mir helfen und danke.

+0

Pageobject Muster: 'https: // www.thoughtworks.com/Erkenntnisse/Blog/using-Seite-Objekte-überwinden-Winkelmesser-shortcomings' – Barney

Antwort

2

Änderung module.exports = CreateAgent; zu module.exports = new CreateAgent();. Sie müssen eine neue Instanz der CreateAgent-Funktion erstellen, um auf alle Methoden innerhalb der Funktion zugreifen zu können.

+0

Ja, das war das Problem, Danke @ Sudharsan Selvaraj – burq24

0

Erstellen Sie eine Instanz in Ihrer Spezifikationsdatei.

Zum Beispiel:

var createAgent = new CreateAgent(); 

und Zugangsfunktionen:

createAgent.addEmail(); 
2

Exportieren eines Objekts von Seite module.exports = new Createagent(); ist NICHT ein Best Practice als Objekt am Leben auch Sie es nicht verwenden (Beispiel-Wenn andere Test spec Ausführung)

beste Weg ist: Export nur Funktion Objekt module.exports = Createagent; und erstellen Sie ein Objekt auf Spec(), wo Sie dieses Seitenobjekt benötigen. Folgen Sie unten Code:

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(){ 

    }); 
})