我正在尝试将我需要的网址存储在使用ConfigSlurper获取的配置文件中。我认为这可能不起作用但不确定。想法?
答案 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