运行使用多个浏览器的 Grails Geb 功能测试
运行使用 Firefox、HtmlUnit、Chrome 和 PhantomJs 的测试
作者:Sergio del Amo
Grails 版本 3.3.1
1 Grails 培训
Grails 培训 - 创建并维护 Grails 框架的人开发并提供的!
2 入门
我们将展示如何使用多个浏览器(Firefox、HtmlUnit、Chrome 和 PhantomJs)运行 Geb 测试
2.1 你将需要
要完成本指南,您需要以下内容
-
花点时间
-
一个不错的文本编辑器或 IDE
-
安装了 JDK 1.7 或更高版本,并且适当地配置了
JAVA_HOME
2.2 如何完成本指南
要开始,请执行以下操作
-
下载并解压源
或
-
克隆 Git 代码库
git clone https://github.com/grails-guides/grails-geb-multiple-browsers.git
Grails 指南代码库包含两个文件夹
-
initial
初始项目。通常是一个简单的 Grails 应用程序,其中添加了一些其他代码来让你领先一步。 -
complete
一个完整的示例。它是完成本指南中介绍的步骤并对initial
文件夹应用这些更改的结果。
要完成本指南,请转到 initial
文件夹
-
cd
进入grails-guides/grails-geb-multiple-browsers/initial
并按照下一部分中的说明进行操作。
如果您进入 grails-guides/grails-geb-multiple-browsers/complete ,可以立刻开始完整示例 |
3 编写应用程序
3.1 Geb 配置
我们使用 GebConfig.groovy 文件处理 Geb 配置
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.firefox.FirefoxDriver
import org.openqa.selenium.htmlunit.HtmlUnitDriver
import org.openqa.selenium.phantomjs.PhantomJSDriver
environments {
htmlUnit {
driver = { new HtmlUnitDriver() }
}
chrome {
driver = { new ChromeDriver() }
}
firefox {
driver = { new FirefoxDriver() }
}
phantomJs {
driver = { new PhantomJSDriver() }
}
}
我们需要添加不同的浏览器依赖项
testCompile "org.grails.plugins:geb"
testRuntime "net.sourceforge.htmlunit:htmlunit:2.18"
testRuntime "org.seleniumhq.selenium:selenium-support:2.53.1"
testCompile "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1"
testCompile "org.seleniumhq.selenium:selenium-firefox-driver:2.53.1"
testCompile "org.seleniumhq.selenium:selenium-chrome-driver:2.53.1"
testCompile "com.codeborne:phantomjsdriver:1.3.0"
我们将通过传递一个系统属性来更改 Geb 环境。因此,我们将系统属性传递到集成测试
integrationTest {
systemProperties System.properties
}
3.2 Geb 测试
我们进行一个简单的 Geb 功能测试。访问主页时,它验证是否存在文本内容 Welcome to Grails 的 <h1> 标题
package grails.geb.multiple.browsers
import geb.spock.GebSpec
import grails.testing.mixin.integration.Integration
@SuppressWarnings('MethodName')
@Integration
class DefaultHomePageSpec extends GebSpec {
def '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
4.4 使用 PhantomJs 运行测试
要在 PhantomJs 中运行测试,我们需要为我们的操作系统下载相应的驱动程序,并将其作为系统属性提供。
./gradlew -Dgeb.env=phantomJs -Dphantomjs.binary.path=/Users/sdelamo/Applications/phantomjs-2.1.1-macosx/bin/phantomjs integrationTest