執行 Geb Script

儘管 Selenium 提供的 WebDriver API 已經相當容易使用,但是在撰寫 Web Application 的自動化測試案例時,我們仍希望有更輕鬆的方式可以完成任務;過於冗長難以維護修改的測試程式碼,很容易造成自動化測試的理想在日後難以維繫。

Geb 基於 WebDriver 的良好基礎,所以 WebDriver 支援的瀏覽器,在 Geb 也同樣能操作。利用 Groovy DSL 易讀易寫的優點,Geb 提供更友善的 Web Test Script 開發環境。在 Geb 程式中,可以直接與其他 Java(Groovy)程式碼互相搭配,例如透過 JDBC 從資料庫取得資料,或是將測試結果利用 JavaMail 傳送電子郵件報告等。

在 Groovy Script 中使用 Geb 相當容易,只要利用 Grapes/Grab 設定相依的 geb-core 及相關套件。目前 Geb 最新穩定發行版本為 0.10.2,可以透過 Maven Central Repository 下載取得,因此直接加上以下的 @Grapes 設定與 import 語法,就能開始在 Groovy Script 程式中使用 Geb。

@Grapes([
    @Grab('org.gebish:geb-core:0.12.2'),
    @Grab('org.seleniumhq.selenium:selenium-firefox-driver:2.46.0'),
    @Grab('org.seleniumhq.selenium:selenium-support:2.46.0')
])
import geb.Browser

為了確保 Geb 能夠正常運作,除了盡可能使用最新 Stable 版本的 Geb 之外,也建議使用最新版本的 Firefox 瀏覽器,並搭配最新的 Selenium WebDriver 套件。在 MVNRepository 網站可以搜尋 selenium-firefox-driver 關鍵字,以獲取最新的版本編號。如果遇到 Geb 無法正常驅動瀏覽器操作的問題,通常都是版本設定在某些搭配下所產生的異常。

如果搭配 Gradle 建置 Groovy/Geb 專案,則必須在 build.gradle 加入以下 dependencies 設定。

compile "org.gebish:geb-core:0.9.2"
compile "org.seleniumhq.selenium:selenium-firefox-driver:2.26.0"
compile "org.seleniumhq.selenium:selenium-support:2.26.0"

範例

原始碼

@Grab('org.gebish:geb-core:0.12.2')
@Grab('org.seleniumhq.selenium:selenium-firefox-driver:2.46.0')
import geb.Browser

def keywords = args.join(' ')

Browser.drive {
    go 'http://google.com'

    $('form#tsf').with {
      q = keywords
      btnK().click()
    }
    waitFor {
        $('h3').size() > 0
    }
    $('h3').each {
        println "* ${it.text()}"
    }
}.quit()

執行

groovy google-search.groovy

results matching ""

    No results matching ""