显示导航

运行使用多个浏览器的 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 如何完成本指南

要开始,请执行以下操作

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 配置

/src/integration-test/groovy/GebConfig.groovy
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() }
    }
}

我们需要添加不同的浏览器依赖项

/build.gradle
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 环境。因此,我们将系统属性传递到集成测试

/build.gradle
integrationTest {
    systemProperties System.properties
}

3.2 Geb 测试

我们进行一个简单的 Geb 功能测试。访问主页时,它验证是否存在文本内容 Welcome to Grails<h1> 标题

welcomeToGrails
/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('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

5 需要 Grails 方面的帮助吗?

Object Computing, Inc. (OCI) 赞助了本指南的创建。可提供各种咨询和支持服务。

OCI 是 Grails 的所在地

团队介绍