我正在使用Geb编写一些浏览器自动化测试。它允许您配置baseUrl
并指定与此相关的浏览器操作,详见The Book of Geb。这适用于网站中的路径,但我无法看到处理子域的任何语法。
是否有使用Geb DSL从baseUrl = http://myapp.com/
转到http://sub.myapp.com
的简单方法,或者我将不得不抓住在代码中定义baseUrl的属性并使用它来生成子域?
答案 0 :(得分:1)
正如erdi所说,目前似乎无法做到这一点。最后,我们将getPageUrl()的重写版本添加到了Page。
的子类中String getPageUrl() {
def subdomainPresent = this.class.declaredFields.find {
it.name == 'subdomain' && isStatic(it.modifiers)
}
if( subdomainPresent ) {
def baseURL = getBrowser().getConfig().getBaseUrl()
def splicePoint = baseURL.indexOf('//') + 1
pageUrl = baseURL[0..splicePoint] + this.class.subdomain + "." + baseURL[splicePoint+1..-1] + pageUrl
}
pageUrl
}
这样用于帐户。{baseUrl} / login
class MyPage extends MyPageBase{
static subdomain = "account"
static url = "login"
}
答案 1 :(得分:1)
在Geb中,Browser类有这个方法:
/**
* Changes the base url used for resolving relative urls.
* <p>
* This method delegates to {@link geb.Configuration#setBaseUrl}.
*/
void setBaseUrl(String baseUrl) {
config.baseUrl = baseUrl
}
我成功使用它来切换同一应用程序的服务器上下文。
E.g:
browser.setBaseUrl('http://int/app/pages/')
browser.setBaseUrl('http://ci/sameapp/pages/')
如果您使用Spock运行测试,则需要在每个功能重置之前完成。
答案 2 :(得分:0)
据我所知,在测试执行期间无法修改baseUrl
,除非直接在配置中设置它:
browser.config.baseUrl = 'http://sub.myapp.com'