使用多个浏览器运行 Grails Geb 功能测试
使用 Firefox、HtmlUnit、Chrome 运行测试
作者:Sergio del Amo
Grails 版本 5.0.1
1 Grails 培训
Grails 培训 - 由创建和积极维护 Grails 框架的人员开发和交付!。
2 入门
我们将展示如何使用多个浏览器(Firefox、HtmlUnit 和 Chrome)运行 Geb 测试
2.1 所需软件
若要完成本指南,你需要具备以下条件:
-
一段时间
-
一个不错的文本编辑器或 IDE
-
以适当方式配置了
JAVA_HOME
的 JDK 1.8 或更高版本
2.2 如何完成指南
按照以下步骤开始操作:
-
下载并解压缩源代码
或
-
克隆 Git 代码库
git clone https://github.com/grails-guides/grails-geb-multiple-browsers.git
Grails 指南代码库包含两个文件夹:
-
initial
初始项目。通常是一个简单的 Grails 应用,添加了一些额外代码,帮助你快速入门。 -
complete
完成的示例。这是完成指南介绍的步骤,并将这些更改应用于initial
文件夹的结果。
若要完成本指南,请转到 initial
文件夹
-
在
grails-guides/grails-geb-multiple-browsers/initial
中使用cd
并按照下一节中的说明进行操作。
如果在 grails-guides/grails-geb-multiple-browsers/complete 中使用 cd ,你就可以直接转到完成的示例 |
3 编写应用程序
3.1 Geb 配置
我们使用 GebConfig.groovy 文件处理 Geb 配置
/src/integration-test/resources/GebConfig.groovy
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.htmlunit.HtmlUnitDriver
environments {
htmlUnit {
driver = { new HtmlUnitDriver() }
}
chrome {
driver = { new ChromeDriver() }
}
firefox {
driver = { new FirefoxDriver() }
}
}
我们要加入不同的浏览器依赖项
/build.gradle
testImplementation "org.grails.plugins:geb"
testRuntime 'net.sourceforge.htmlunit:htmlunit:2.35.0'
testImplementation "org.seleniumhq.selenium:htmlunit-driver:2.35.1"
testImplementation "org.seleniumhq.selenium:selenium-remote-driver:3.141.59"
testImplementation "org.seleniumhq.selenium:selenium-api:3.141.59"
testImplementation "org.seleniumhq.selenium:selenium-support:3.141.59"
testRuntimeOnly "org.seleniumhq.selenium:selenium-chrome-driver:3.141.59"
testRuntimeOnly "org.seleniumhq.selenium:selenium-firefox-driver:3.141.59"
我们将改变 Geb 环境,传递一个系统属性。因此,我们传递系统属性给集成测试
/build.gradle
integrationTest {
systemProperties System.properties
}
3.2 Geb 测试
我们做一个简单的 Geb 功能测试。当我们访问主页时,它验证是否有文本为 Welcome to Grails 的 <h1> 标题。
/src/integration-test/groovy/grails/geb/multiple/browsers/DefaultHomePageSpec.groovy
package grails.geb.multiple.browsers
import geb.spock.GebSpec
import grails.testing.mixin.integration.Integration
@SuppressWarnings('JUnitPublicNonTestMethod')
@SuppressWarnings('MethodName')
@Integration
class DefaultHomePageSpec extends GebSpec {
void 'verifies there is _<h1>_ header with the text _Welcome to Grails when we visit the home page.'() {
when:
go '/'
then:
$('h1').text() == 'Welcome to Grails'
}
}
4 运行应用程序
4.1 使用 Firefox 运行测试
./gradlew -Dgeb.env=firefox integrationTest
4.2 使用 Chrome 运行测试
要在 Google Chrome 中运行测试,你需要 下载适当的驱动程序。
./gradlew -Dgeb.env=chrome -Dwebdriver.chrome.driver=/Users/sdelamo/Applications/chromedriver integrationTest
4.3 使用 HtmlUnit 运行测试
./gradlew -Dgeb.env=htmlUnit integrationTest