2017-03-28 4 views
0

Ich arbeite daran, ein Formular zu automatisieren, um ein Profil zu erstellen. Dabei habe ich etwas beobachtet, das ich verstehen muss. Bitte schauen Sie sich den Code unten an und ob es großartig wäre, wenn jemand den Grund dafür erklären könnte.Zugriff auf Elemente im Seitenobjektmodell

Ich verwende Seitenobjekt für mein Projekt. Ich habe Selektoren definiert unter Elementen und ich greife auf die Elemente/Selektoren in den Funktionen unten.

Ich bin nicht in der Lage, die Elemente in der Funktion für den Code unten zuzugreifen

Für die this.api.perform Funktion, wenn ich versuche, das Element zuzugreifen (subjectGenderFemale) darauf zu klicken, es Fehler aus mit der Fehler "ERROR: Element konnte nicht gefunden werden:" @subjectGenderFemale "using: css selector". Also musste ich mit dem Eingang des aktuellen Selektors [Wert = "F"] darauf zugreifen. Bitte beachten Sie den Code unter @ .api.perform.

'use strict'; 
var assert = require('assert'); 

var subjectJSON = require('../../../e2e/data/subjectData.json'); 

module.exports = { 
    elements: { 
    newSubjectButton: { 
     selector: '.btn.btn--primary' 
}, 
subjectFirstName: { 
    selector: 'input[name^="first_name"]' 
}, 
subjectLastName: { 
    selector: 'input[name^="last_name"]' 
}, 
subjectDateOfBirth: { 
    selector: 'input[name^="date_of_birth"]' 
}, 
subjectGenderFemale: { 
    selector: 'input[value="F"]' 
}, 
subjectGenderMale: { 
    selector: 'input[value="M"]' 
}, 
submitButton: { 
    selector: '.col.col-sm-offset-2.col-sm-8>div>form>button' 
} 
    }, 
    commands: [{ 
openCreateSubjectForm: function() { 
    return this 
    .waitForElementPresent('@newSubjectButton', 1000) 
    //the below href needs to change to proper element 
    .click('a[href="/subject/create"]') 
}, 
populateSubjectForm: function() { 
    return this 
    .setValue('@subjectFirstName', subjectJSON["createSubject"]["firstName"]) 
    .setValue('@subjectLastName', subjectJSON["createSubject"]["lastName"]) 
    .setValue('@subjectDateOfBirth', subjectJSON["createSubject"]["dateOfBirth"]) 
    .api.perform(function() { 
    if (subjectJSON["createSubject"]["gender"]=="F") { 
     this.api.click('input[value="F"]') 
    }else if (subjectJSON["createSubject"]["gender"]=="M") { 
     this.api.click('input[value="M"]') 
    }else if (subjectJSON["createSubject"]["gender"]=="Both") { 
     this.api.click('input[value="Both"]') 
    }else { 
     this.api.click('input[value="No preference"]') 
    } 
    }) 
}, 
submitCreateSubjectForm: function() { 
    return this.click('@submitButton'); 
} 
}] 
}; 

Antwort

0

ich habe, um dieses Problem, indem es über this.elements.subjectGenderFemale.selector

Zugriff