2017-09-28 126 views
2

我有对网页上的每一个元素定义内容的模块,我有工作:如何一次性使用Spock验证Geb模块的全部内容,而不是单独声明每个元素?

package com.gdit.qa.fwa.geb.cmdr.modules 

import geb.Module 

class Member extends Module { 
    static content = { 
     // Member fields 
     mbrID {$("div.subject-details div.memberDetails input.projMbrId")} 
     mbrName {$("input.projMbrName")} 
     mbrRegion {$("select.projMbrReg")} 
     mbrAdd1 {$("input.projMbrAdd1")} 
     mbrAdd2 {$("input.projMbrAdd2")} 
     mbrAdd3 {$("input.projMbrAdd3")} 
     mbrCity {$("input.projMbrCity")} 
     mbrState {$("select.projMbrState")} 
     mbrZip {$("input.projMbrZip")} 
     mbrHomePhone {$("input.projMbrHomePhone")} 
     mbrHomePhoneExt {$("input.projMbrHomePhoneExt")} 
     mbrWrkPhone {$("input.projMbrWorkPhone")} 
     mbrWrkPhoneExt {$("input.projMbrWorkPhoneExt")} 
     mbrEmail {$("input.projMbrPersonalEMail")} 
     mbrWrkEmail {$("input.projMbrWorkEMail")} 
    } 
} 

在我的测试规范,我断言,包含我的模块中的每个元素存在,但只有这样,我知道如何做到这一点是通过单独断言每个元素:一下子让

package cmdr.ProjectCover 

import com.gdit.qa.fwa.geb.cmdr.pages.HomePage 
import com.gdit.qa.fwa.geb.cmdr.pages.ProjectCover 
import geb.spock.GebReportingSpec 

class VerifyMemberFields extends GebReportingSpec { 
    def setupSpec() { 
     // Log in to app 
     via HomePage 
     loginPage.signIn("marco", "abc123") 

     // Navigate to Member Page 
     memberPageButton.click() 
    } 

    def "Verify Member fields exist"() { 
     when: "User selects Member option for subject type" 
     at ProjectCover 
     projSubject.click() 
     projCoverMbrFields.projSubjectMbrOption.click() 

     then: "All expected member fields are displayed in the left panel" 
     assert projCoverMbrFields.mbrID.present 
     assert projCoverMbrFields.mbrName.present 
     assert projCoverMbrFields.mbrRegion.present 
     assert projCoverMbrFields.mbrAdd1.present 
     assert projCoverMbrFields.mbrAdd2.present 
     assert projCoverMbrFields.mbrAdd3.present 
     assert projCoverMbrFields.mbrCity.present 
     assert projCoverMbrFields.mbrState.present 
     assert projCoverMbrFields.mbrZip.present 
     assert projCoverMbrFields.mbrHomePhone.present 
     assert projCoverMbrFields.mbrHomePhoneExt.present 
     assert projCoverMbrFields.mbrWrkPhone.present 
     assert projCoverMbrFields.mbrWrkPhoneExt.present 
     assert projCoverMbrFields.mbrEmail.present 
     assert projCoverMbrFields.mbrWrkEmail.present 
    } 

我想知道是否有办法为我(而不是单独断言我的模块中的每个元素)断言模块的全部内容我的特征方法,然后阻止条件可以减少。

回答

1

我现在还不知道这样做的方法,但是当GEB-369被实现时,这将是可能且相对容易的。

-1

我没有时间来测试这一点,但我认为,如果你想给它一个尝试这应该工作:

def "Verify Member fields exist"() { 
    when: "User selects Member option for subject type" 
    at ProjectCover 
    projSubject.click() 
    projCoverMbrFields.projSubjectMbrOption.click() 

    then: "All expected member fields are displayed in the left panel" 
    projCoverMbrFields.content.each{ element -> 
     assert element.present 
    } 
} 
相关问题