构建可靠应用:Geb 功能测试与页面对象的运用
1. 低级别 API 与功能测试挑战
在功能测试中,最初我们接触到低级别 Geb API。这些 API 包含众多属性和方法,通过它们,几乎可以模拟用户在浏览器中的所有操作。不过,直接在测试用例里使用低级别 API 并非明智之举。
以一个简单的场景为例,用户在浏览器地址栏输入“My Timeline”的 URL 来发布新消息。这时,首先要确保用户被重定向到登录页面;输入正确的凭证后,要保证“My Timeline”页面正确显示;发布新消息后,还需验证页面仍显示且包含新消息。在这个简短的流程中,需要两次检查页面状态。而且,时间线页面和登录页面会在许多功能测试中频繁出现。若每次验证页面显示是否正确都手动使用$()函数,一旦页面的标记发生更改,所有检查该页面内容的测试都得更新,这无疑会增加维护成本。
以下是导航对象上基于操作的方法表格:
| 方法/属性 | 描述 |
| — | — |
|<<(keysString)| 向所选元素发送按键操作。 |
|click()| 模拟用户点击元素,元素可以是按钮、链接或任何有点击处理程序的对象。 |
|value(newValue)| 设置表单字段的值,如下拉列表或文本区域。 |
|<fieldname> = newValue| 这是value()的快捷方式,可直接设置名为fieldname