2015-11-06 80 views
0

我剛剛開始閱讀並嘗試使用一些Geb 0.12.2示例和它的文檔(http://www.gebish.org/manual/current),並且需要幫助來理解爲什麼這些斷言失敗。 我的第一次嘗試是使用重定向到我們的IDP登錄的web應用程序,如果它成功登錄,然後將您重定向到私有web應用程序內容。 我一直在失敗這個例子,並決定嘗試最簡單的例子(我也使用Spok,登錄模塊重用和Spec定義)我可以做更好地理解發生了什麼事情(我也是一個Eclipse用戶,對於這種情況已經切換到IntelliJ)。最簡單的Geb示例失敗斷言

斷言2和3的失敗,因爲空值與預期的我相比標題:// 2斷言的

package pages 

import geb.Browser 
import geb.Page 

class GooglePage extends Page { 
    static url = "http://www.google.com/" 

    static content = { 
     heading { $("title").text() } 
    } 

    static at = { 
     title == "Google"    //1 
     $('title').text() == "Google" //2 
     heading == "Google"   //3 
    } 
} 

Browser.drive{ 
    to GooglePage 
} 

輸出失敗:

Caught: Assertion failed: 

$('title').text() == "Google" 
     |   |  | 
     |   ""  false 
     [[[FirefoxDriver: firefox on WINDOWS (2c4f1f19-b4fc-4f1f-bb39-9e0e2459da58)] -> css selector: title]] 

輸出// 3斷言失敗:

Caught: Assertion failed: 

heading == "Google"   //3 
|  | 
""  false 

只有第一個斷言是真的,這是內置的title屬性。根據文檔http://www.gebish.org/manual/current/#at-checker有幾種方法來檢索標題的值,但似乎我錯誤地使用它。

與chromeTest,firefoxTest或phantomJS同樣失敗,或者通過命令行從IntelliJ或gradlew運行)。 我已經重新閱讀了一些文檔部分,但閱讀得越多,我越理解。

什麼是我誤解或失蹤?

謝謝。

回答

0

您只能通過Page類的title屬性獲得標題的值,您在//1中執行此操作。您無法使用$()選擇器選擇<title>元素,這是WebDriver的侷限性 - 這就是爲什麼WebDriver.getTitle()在那裏和Page.getTitle()委託給它(按照它的javadoc)。

請你指點一下http://www.gebish.org/manual/current/#at-checker的哪一部分讓你相信有幾種獲得標題的方法?我個人認爲該部分不會做出這樣的陳述,但如果確實如此,我們應該修正它。

+0

感謝您的澄清!我錯誤地表達了自己的意思:我的意思是我混合了文檔中顯示的示例,即選擇h1,ap元素,div等......您不應該修復任何內容,但可能對像我這樣的Geb學習者有幫助在解釋選擇器或頁面屬性時看到任何建議。我知道這實際上不是一個geb特定的限制,但是因爲它使用WebKit,並且暴露了通過Page對象的方法對我來說似乎並不明顯(對於我的WebKit無知),所以這些方法在那裏,因爲不可能以其他方式檢索它的值。 – exoddus