2016-06-16 19 views
1

Im Winkelmesser versuche ich meine Locators aufzuräumen und die Dinge ein wenig besser zu organisieren. Derzeit habe ich eine Variable, die das Element Locator für einen Dialog enthält, und eine Taste speichern:Verkettungselement-Variablen für bessere Position im Winkelmesser

var StoryPage = function(){ 
    this.dialog = element(by.css('md-dialog')); 
    this.saveButton = element(by.buttonText('Save')); 
} 

Meine Frage ist, gibt es eine Möglichkeit, Kette diese Elementvariablen, so dass ich den Speicher-Knopf finden innerhalb der Dialog wie folgt:

this.dialog.saveButton.click() 

oder

this.dropdown.saveButton.click() 

Vielen Dank im Voraus!

Antwort

1

Ja, Sie können Kette das Element Findern in Protractor:

var StoryPage = function() { 
    this.dialog = element(by.css('md-dialog')); 
    this.saveButton = this.dialog.element(by.buttonText('Save')); 
} 

Nun ist die Save Taste würde innerhalb/im Umfang/innerhalb des md-dialog Element angeordnet sein.


Wenn Sie wollen „Skala“, die auf mehrere Seitenobjekte, können Sie eine Basisseite Objekt definieren:

var BasePage = function() { 
    this.getSaveButton = function() { 
     return this.dialog.element(by.buttonText('Save')); 
    } 
} 

module.exports = new BasePage(); 

Dann verwenden prototypische Vererbung Ihre andere Seite Objekte von dem erben Basis eine, die Sie haben save Tasten innerhalb der unterschiedlichen Dialog Container erlauben würde:

var BasePage = require("base"); 

var StoryPage = function(){ 
    this.dialog = element(by.css('md-dialog')); 
} 

StoryPage.prototype = Object.create(BasePage); 

module.exports = new StoryPage(); 
+0

ich bin mir bewusst, können Sie Kettenelemente wie th beim. Anstatt einen 'saveDialogButton' und dann einen' saveDropdownButton' zu erstellen, frage ich mich, ob Sie einen universellen 'saveButton' haben können, den Sie nach dem ursprünglichen Element verketten. –

+0

@ColGallagher okay, sicher. Mit einem Beispielansatz aktualisiert. Hoffe, wir sind immer noch auf der gleichen Seite (beachten Sie das Wortspiel :)). – alecxe

+0

Tausend Dank! Die Prototyp-Idee ist genau das, was ich brauchte. Ich habe gerade meinen Account gemacht (sollte es schon vor Jahren getan haben), aber sobald ich 15 Punkte bekomme, werde ich sicherstellen, dass du die Upvote bekommst, die du verdienst. –