spock을 사용하여 geb 테스트의 기본 로그를 작성하려고합니다. 나는 2 페이지의 객체를 생성했다. 하나는 로그인 페이지를위한 것이고 다른 하나는 로그인 후에 가져온 페이지를위한 것이다.하나의 Geb 테스트에서 여러 페이지 객체 사용
로그인 페이지
package Pages
import geb.Page
class loginPage extends Page {
static url = 'login/'
static at = {title == "Login to TalentBank"}
static content = {
logo {$(".center-img img")}
emailHeader {$(".form-group label", text:"Email")}
emailTextBox {$('#email')}
pwdHeader {$(".form-group label", text:"Password")}
pwdTextBox {$("#password")}
loginButton {$("#loginButton")}
}
}
홈 페이지
package Pages
import geb.Page
class homePage extends Page {
static at = {title == "Home"}
static content = {
tile1 {$("#page-container > div.container-fluid > div > div:nth-child(2) > div")}
}
}
TestSpec. 로그인 페이지로 이동하여 사용자 자격 증명을 입력하고 로그인 버튼을 클릭하고 홈 페이지의 요소를 기다린 다음 홈 페이지에 있는지 확인하는 기본 테스트입니다. 내가 테스트를 실행하면
import Pages.loginPage
import Pages.homePage
import geb.spock.GebReportingSpec
class loginPageSpec extends GebReportingSpec {
def "Log in to TalentBank Core"(){
given:
to loginPage
waitFor {loginButton.isDisplayed()}
when:
emailTextBox.value("Ruxin")
pwdTextBox.value("Test1234")
loginButton.click()
then:
waitFor {tile1.isDisplayed()}
at homePage
}
}
, 나는 아래의 오류를 얻을
에 의해 발생 : Pages.loginPage 컨텐츠로 타일 1, 또는에 속성으로 해결을 할 수 없습니다 : groovy.lang.MissingPropertyException 그것의 네비게이터 컨텍스트. tile1이 (가) 가져 오는 것을 잊어 버린 클래스입니까?
homePage 대신 loginPage에서 tile1을 찾고 있습니다.
내가 드릴 수 없습니다이 테스트는 당신의 제안에 작동시킬 수 없습니다. 나는 다음 단계에서 즉시 테스트가 실패하는 것을보고있다. 해당 페이지가로드되기를 기다리기 전에 홈 페이지에 있는지 확인하려고 시도합니다. 내가 홈 페이지에 있는지 확인하기 전에 기다려야합니다. 나는 "waitFor {homePage.tile1.isDisplayed()}"위의 : 홈페이지 단계에서 이동했지만 "아니요 같은 속성 : 클래스 tile1 : Pages.homePage"오류로 작동하지 않습니다 – TestRaptor
올바른 제목 ("집")을 얻고 있습니까? ID가있는 다른 요소를 시도하면 작동합니까? – Royg
오른쪽 제목은 집입니다. 그러나이 테스트에서는 실제 페이지가로드되기 전에 제목이 "집"과 같은지 확인하려고했습니다. 제목이 여전히 이전 페이지에서 "로그인"과 같았 기 때문에 실패했습니다.내 HomePage 페이지 개체를 약간 변경했는데 내 문제가 해결 된 것 같습니다. "static at = {title =="Home "} 대신"static at at {waitFor {title == "Home"}} " – TestRaptor