显示导航

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

按照以下步骤开始操作:

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> 标题。

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

5 是否在 Grails 中需要帮助?

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

OCI 是 Grails 的家

认识团队