我正在努力自动化表单来创建个人资料。在这样做时,我观察到了一些我需要理解的东西。请查看下面的代码,如果有人能解释其背后的原因,那将是多么好。
我正在为我的项目使用页面对象。 我在元素下定义了选择器,我正在访问下面函数中的元素/选择器。
我无法访问以下代码的函数内部的元素
对于this.api.perform函数,当我尝试访问元素(subjectGenderFemale)以点击它时,它出错并出现错误"错误:无法找到元素:" @ subjectGenderFemale&# 34;使用:css选择器"。所以我必须使用实际的选择器'输入[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');
}
}]
};
答案 0 :(得分:0)
我通过this.elements.subjectGenderFemale.selector