2014-11-07 2 views
1

여러 책에 대한 링크가 포함 된 페이지 (시작 페이지)가 있으며 특정 제목의 링크를 클릭하고 해당 페이지로 이동하는 일반적인 방법이나 콘텐츠 정의를 만들고 싶습니다. 모든 책 페이지에는 책의 제목을 정의하는 static String TITLE이 정의되어 있습니다. 내가하고 싶은이 (시작 페이지) 같은 것입니다 :Geb에서 콘텐츠 정의에 인수를 전달하는 방법은 무엇입니까?

def <T extends Page> T openBook(Class<T> pageType) { 
    $(".product h3", text: pageType.TITLE).parents("a").click() 
    browser.to(pageType) 
    browser.page as T 
} 

그러나이 작동하지 않는 I가 탐색 할 때부터 pageType (browser.to(pageType) 사용) 게브가 대신 로그인 페이지로 저를 리디렉션처럼 보인다 로 전화하면 세션이 재설정 되었기 때문에 pageType을 요청했습니다.

나는 방법을 리팩토링 및 콘텐츠의 정의에 모든 하드 코딩하는 경우 :

static content = { 
    openMyBook(to: MyBookPage) { $(".product h3", text: "My Book Title").parents("a")} 
} 

그냥 openMyBook를 호출하여 작동하지만이 책 페이지 (MyBookPage)와 text를 볼 수있는 하드입니다.

기본적으로 콘텐츠 정의 (openMyBook)에 인수를 전달하거나 openBook 메서드를 수정하여 세션을 손실하지 않고 책 페이지를 탐색 할 수 있습니다.

답변

2

당신은 당신은 아마이 페이지에 대한 static url = '...' 필드를 지정하지 않았습니다. 전달 된 페이지 유형의 URL에 to() 드라이브 to() 때문에 브라우저 대신 여기 browser.page(pageType)를 사용할 필요가 기본은 기본 URL의 루트 인 로그인 페이지에서 브라우저가 표시되는 이유입니다.

여기 browser.at(pageType)을 사용하면 책 페이지의 체크 표시가 확인되고 확인을 마친 후 at()이 브라우저에 페이지를 설정하기 때문에 더 좋을 것입니다.

관련 문제