我是一個喜歡先看結局,在決定應不應該看這出戲的人,所以反常的,我先跳過了基礎,直接給一個實際的例子,從實際例子來看,這是不是你想要的東西?再決定要不要花時間投入 。
前置需求:
* JDK
* Maven
* Groovy
* Git
測試需求:
首頁的特定超連結,點擊後,會前往指定的頁面,並確認最後一個標題,為指定的文字。
範例位址:
https://github.com/alincode/GebTutorial
從github clone一份source code後,在GebTutorial目錄下執行mvn test。
package functionality
import geb.spock.GebReportingSpec
import pages.CrossBrowserPage
import pages.FrontPage
import spock.lang.Stepwise
// 這是一個Spock Framework的Annotation,指method之間相依性的關係。
// (雖然這個範例實際上無相依性,若用前往首頁、登入、登出,會是比較好的範例,不過我暫時找不到一個可測試的網站,所以就先暫時這樣寫,之後會在修改範例。)
@Stepwise
class TestSpec extends GebReportingSpec{
// 某個測試步驟名稱
def "check Cross Browser Page link"(){
given:
to FrontPage
// 點下首頁中的某個連結
when:
item1.click(CrossBrowserPage)
// 判斷標題是否如預期的文字
then:
topic3 == 'Headless Browsers'
}
}
package pages
import geb.Page
class FrontPage extends Page {
static at = {$('#main h1').first().text() == 'What is it?' }
// http://www.gebish.org/
static url = ""
static content = {
item1 { $('#sidebar li a').first() }
}
}
package pages
import geb.Page
class CrossBrowserPage extends Page {
// 判斷是否為這個頁面的檢查條件
static at = {$('#main h1').first().text() == 'Cross Browser Automation'}
// 頁面網址
static url = "/crossbrowser"
// 頁面的內容物有哪些元素
static content = {
topic3 { $('#main h1').last().text() }
}
}