私は、プロファイルを作成するフォームを自動化するために取り組んでいます。それをしながら私は理解する必要があるものを観察した。以下のコードを見て、誰かがこれの背後にある理由を説明できるなら、それが素晴らしいだろうか。アクセスページオブジェクトモデルの要素の範囲
私は自分のプロジェクトにページオブジェクトを使用しています。 私はセレクタを要素の下に定義していますが、下の関数の要素/セレクタにアクセスしています。
私は、それをクリックする要素(subjectGenderFemale)にアクセスしようとしたとき、私はそれでエラー、this.api.perform機能については以下のコード
用関数内の要素にアクセスすることができていないですエラー "エラー:要素を見つけることができません:" @subjectGenderFemale "using:css selector"。だから、私は実際のセレクタのinput [value = "F"] 'でそれにアクセスしなければなりませんでした。 @ .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');
}
}]
};