表單處理

操作 HTML 的表單元件,是 Geb 程式重要的功能,測試表單功能是否正常運作,也是自動化測試需要關心的部分。

使用 Geb 存取表單欄位,可以有兩種寫法。

第一種是直接存取表單的某個欄位。

$('input', name: 'username')

另外一種方式則是利用表單的「捷徑(shortcuts)」來存取欄位。

$('form').username

因為表單元件的互動很常見,所以 Geb 提供「捷徑」的語法,讓程式碼看起來更簡潔。

通常我們偏好這個寫法,它看起來更簡潔,更符合 Groovy 程式寫作的風格。

先取得 Form Element,就可以對它所屬的欄位進行操作。

def form = $('form')

form.username = 'manager'
form.password = 'xxxxx'

搭配 with 使用,「填寫表單」的程式碼,語意看起來更明確。

$('form').with {
    username = 'superadmin'
    password = 'xxxxx'
}

常見的 HTML 表單元件如 input、select 等,以下是更詳細的介紹。

文字欄位(Text fields)

可以使用 value() 存取欄位內容。

HTML Source Code

<form>
    <input type="text" name="address" />
</form>

Geb Sample Code

設定文字欄位內容。

// 1.
$('input', name: 'address').value('台北市中正區重慶南路一段')

// 2.
$('form').address = '台北市中正區重慶南路一段'

取得值

// 1.
$('input', name: 'address').value()

// 2.
$('form').address

若要檢查文字欄位的內容可以這樣做。

assert $('input', name: 'address').value() == '台北市中正區重慶南路一段'
assert $('form').address.startsWith('台北市')
assert $('form').address == '台北市中正區重慶南路一段'

核取方塊(Checkbox)

單選的 HTML 表單的核取方塊,只有選或不選兩種情況。

HTML Source Code

<form>
    <!-- donate -->
    <input type="checkbox" name="donate"/>
</form>

Geb Sample Code

模擬滑鼠點擊。

$('checkbox', name: 'donate').click()

// Or with shortcut
$('form').donate().click()

利用 value() 取得及設定勾選與否的狀態(boolean)。

// boolean
def isDonate = $('checkbox', name: 'donate').value()

$('checkbox', name: 'donate').value(true)
$('checkbox', name: 'donate').value(false)

使用表單捷徑的語法範例。

$('form').donate().click()
$('form').donate = true // Or false
isDonate = $('form').donate

多選核取方塊(Multi-select Checkbox)

用於可複選的核取方塊。

HTML Source Code

<form>
    <!-- hobbies -->
    <input type="checkbox" name="hobbies" value="music" />
    <input type="checkbox" name="hobbies" value="chicken" />
</form>

Geb Sample Code

// return value

// 全部選取
$('form').hobbies = true

// 全部取消
$('form').hobbies = false

$('checkbox', name: 'hobbies').value('chicken')
$('form').hobbies = 'chicken'

取得值

$('form').hobbies

判斷式

// 沒有一個欄位被勾選
assert $('input', name: 'hobbies').value() == false

// 檢查 chicken 是否被勾選
assert $('form').hobbies.contains('chicken')

選項按鈕(Radio)

HTML 表單中的單選按鈕。

HTML Source Code

<form>
    <input type="radio" name="sex" value="male" />
    <input type="radio" name="sex" value="female" />
</form>

Geb Sample Code

設定值。

$('form').sex = "female"

取得值

$('form').sex

判斷式

assert $('form').sex == 'female'

檔案欄位

HTML Source Code

<form>
    <input type="file" name="csvFile" />
</form>

Geb Sample Code

設定值

$('form').csvFile = '/tmp/data.csv'

// Or
$('input', name : 'csvFile').value('/tmp/data.csv')

下拉式選單(Drop-down Select)

HTML Source Code

<form>
    <select name="artist">
        <option value="1">Alin</option>
        <option value="2">Kyle</option>
        <option value="3">Sean</option>
    </select>
</form>

Geb Sample Code

設定值

$('input', name: 'artist').value('1') // Or 'Alin'

// Or in shortcut style
$('form').artist = 'Alin'
$('form').artist = 1 // same as '1'

取得值

$('form').artist

判斷式

assert $('form').artist == '1'

results matching ""

    No results matching ""