2017-03-28 11 views
0

私は、プロファイルを作成するフォームを自動化するために取り組んでいます。それをしながら私は理解する必要があるものを観察した。以下のコードを見て、誰かがこれの背後にある理由を説明できるなら、それが素晴らしいだろうか。アクセスページオブジェクトモデルの要素の範囲

私は自分のプロジェクトにページオブジェクトを使用しています。 私はセレクタを要素の下に定義していますが、下の関数の要素/セレクタにアクセスしています。

私は、それをクリックする要素(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'); 
} 
}] 
}; 

答えて

0

私はthis.elements.subjectGenderFemale.selector

経由でアクセスすることによりこの問題を回避ました