0

我正在尝试将我需要的 url 存储在使用 ConfigSlurper 提取的配置文件中。我认为这可能行不通,但不确定。想法?

4

3 回答 3

2

您可能正在寻找由baseUrl配置提供的功能。当使用to MyPage浏览器使用的 url 时,通过结合basUrl配置和url页面类的属性来确定。

于 2013-04-03T13:53:25.583 回答
1

如果您想要一种更简洁的方法来执行此操作,您可以实现如下所示的基页面 - 为简洁起见并避免直接调用受保护方法的内部类 - (我们在 26 个不同的子域上有应用程序!):

package page.admin

import geb.Configuration
import geb.Page

class AdminPage extends Page {

    class WrappedConfig extends Configuration {

        WrappedConfig(ConfigObject rawConfig) {
            super(rawConfig)
        }

        String getAdminBaseUrl() {
            return readValue('adminUrl', '<invalid-url>')
        }

    }

    String getPageUrl() {
        WrappedConfig config = new WrappedConfig(browser.config.rawConfig)
        return config.adminBaseUrl + this.class.url
    }

}

您的配置可能如下所示:

baseUrl = 'http://base-app.example.net'
adminUrl = 'http://admin-app.example.com'

这样,您仍然可以使用普通的 geb 语法:

given:
    to PageWhichExtendsAdminPage, 'your-path', key1: 'value1

生成网址http://admin-app.example.com/your-path/?key1=value1

于 2014-10-22T09:22:45.820 回答
0

我在不同的语言环境中运行 geb,所以我遇到了同样的问题。我通常使用 locale.getCountry() 作为环境参数从配置文件中加载不同的 url。

在正在运行的类中,我将 baseUrl 替换为使用 ConfigSlurper 加载的条目。优点是我可以处理多个语言环境和本地主机环境。在本地测试与测试暂存环境。

我有一个包含整个回归测试的主 spock 文件和每个国家/地区的继承 spock 类。除了类名中的国家/语言编码之外,继承的 spock 文件不包含太多内容。

配置文件:

environment{
  CA{
    url="ca.somewhere.com"
    validZipCode=...
    ...
  }
  ...
}

主要类:

class MainRegression extends GebReportingSpec{

@Shared Locale locale

def setupSpec(){
  ...
  locale = ParameterReader.getLocale(this.class.name)
  ...
}

def "testing the website"(){
  when: "entering the main url"
  go URLService.getBaseUrl(locale)
  ...

}

继承类:

@Stepwise
class CaEnRegressionSpec{} // Canada with english language

使用不同语言/语言环境处理验证时的好方法:http: //ldaley.com/post/1013531080/painless-page-identification-with-geb-grails

于 2013-07-30T20:21:02.080 回答