关于 geb-skill
为使用 Geb 和 Spock 进行浏览器及 Web 测试提供参考,面向 Groovy 测试编写者,涵盖页面对象、选择器、云端执行、API 测试和 CI 模式。
主要功能
- 01Geb 与 Spock 测试模式
- 02页面对象与内容 DSL
- 03选择器和浏览器交互
- 04TestMu AI 云端执行配置
- 05使用 Groovy 进行 API 测试
- 06CI/CD 与调试指南
适用场景
- 01使用页面对象编写浏览器测试
- 02在 TestMu AI 云端运行测试
- 03使用 Groovy 测试 REST API
- 04将测试集成到 CI 工作流
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lambdatest/ agent-skills --skill geb-skill安装后在 Claude Code 中输入/geb-skill确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/advanced-patterns.mdcloud-integration.mdplaybook.md详细介绍
Geb 自动化技能
有关 TestMu AI 云端执行,请参阅 reference/cloud-integration.md 和 shared/testmu-cloud-reference.md。
核心模式
基本测试(Spock)
import geb.spock.GebSpec
class LoginSpec extends GebSpec {
def "login with valid credentials"() {
when:
to LoginPage
emailInput.value("[email protected]")
passwordInput.value("password123")
loginButton.click()
then:
at DashboardPage
welcomeMessage.text().contains("Welcome")
}
def "login shows error for invalid credentials"() {
when:
to LoginPage
emailInput.value("[email protected]")
passwordInput.value("wrong")
loginButton.click()
then:
at LoginPage
errorMessage.displayed
errorMessage.text().contains("Invalid")
}
}
页面对象
class LoginPage extends geb.Page {
static url = "/login"
static at = { title == "Login" }
static content = {
emailInput { $("#email") }
passwordInput { $("#password") }
loginButton { $("button[type='submit']") }
errorMessage(required: false) { $(".error") }
}
}
class DashboardPage extends geb.Page {
static url = "/dashboard"
static at = { $(".dashboard").displayed }
static content = {
welcomeMessage { $(".welcome") }
userName { $(".user-name") }
}
}
Navigator API
$("css-selector")
$("div", class: "active")
$("input", name: "email")
$("div.items li", 0) // First match
$("div.items li").size() // Count
// Actions
element.click()
element.value("text")
element << "text" // Append text
element.text()
element.displayed
element.@href // Attribute
云端:driver = new RemoteWebDriver(new URL(gridUrl), caps)
设置:使用 geb-spock 和 selenium-support 依赖项的 Gradle
在 TestMu AI 上云端执行
设置环境变量:LT_USERNAME、LT_ACCESS_KEY
// GebConfig.groovy
environments {
lambdatest {
driver = {
def ltOptions = [
user: System.getenv("LT_USERNAME"),
accessKey: System.getenv("LT_ACCESS_KEY"),
build: "Geb Build",
name: "Geb Test",
platformName: "Windows 11",
video: true,
console: true,
network: true,
]
def caps = new ChromeOptions()
caps.setCapability("LT:Options", ltOptions)
new RemoteWebDriver(
new URL("https://hub.lambdatest.com/wd/hub"), caps)
}
}
}
运行:./gradlew test -Dgeb.env=lambdatest
运行:./gradlew test
深入模式
请参阅 reference/playbook.md,了解适用于生产环境的模式:
| 章节 | 内容 |
|---|---|
| §1 项目设置 | build.gradle、GebConfig.groovy、环境、等待配置 |
| §2 页面对象 | Content DSL、at 检查、用于复用组件的模块 |
| §3 规范测试 | Spock 集成、使用 @Unroll 的数据驱动测试、@Stepwise 流程 |
| §4 等待与异步 | 等待预设、JavaScript 交互、警告框/确认框 |
| §5 高级模式 | 文件上传/下载、窗口、框架、自定义扩展 |
| §6 API 测试 | 使用 Groovy JsonSlurper 的 REST API 规范 |
| §7 CI/CD 集成 | 使用无头 Chrome 的 GitHub Actions、Gradle 缓存 |
| §8 调试表 | 12 个常见问题及其原因和解决方法 |
| §9 最佳实践 | 14 项 Geb 测试检查清单 |
评论
支持 Markdown