来自ConfigSlurper的Geb页面url方法

时间:2013-04-02 18:52:13

标签: geb

我正在尝试将我需要的网址存储在使用ConfigSlurper获取的配置文件中。我认为这可能不起作用但不确定。想法?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

如果你想要一个稍微简洁的方法,你可以实现一个基页,例如下面的一个 - 内部类以简化并避免直接调用受保护的方法 - (我们在26个不同的子域上有应用程序!):< / p>

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

答案 2 :(得分:0)

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

在运行类中,我将baseUrl替换为带有ConfigSlurper的加载条目。优点是我可以处理多个语言环境和localhost环境。在本地测试与测试登台环境。

我有一个主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