我正在尝试将我需要的 url 存储在使用 ConfigSlurper 提取的配置文件中。我认为这可能行不通,但不确定。想法?
3 回答
您可能正在寻找由baseUrl配置提供的功能。当使用to MyPage
浏览器使用的 url 时,通过结合basUrl
配置和url
页面类的属性来确定。
如果您想要一种更简洁的方法来执行此操作,您可以实现如下所示的基页面 - 为简洁起见并避免直接调用受保护方法的内部类 - (我们在 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
我在不同的语言环境中运行 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