2013-09-05 25 views
1

我有一個使用Geb的Grails黃瓜測試。Geb - 如何查詢頁面請求參數

如何獲取爲當前頁面定義的請求參數?

E.g.鑑於目前的網頁地址是www.foo.com/list?sort=name&order=asc

我該如何測試sortorder PARAMS的值是什麼?

+0

你想獲取當前頁面瀏覽器的請求參數嗎? – erdi

+0

@erdi - 是的,我試圖檢查當前頁面的請求參數。我嘗試過使用page.getDriver()。getCurrentUrl(),但沒有返回參數。但是,我不確定URL是否已被正確更改(我試圖單擊列標題進行排序)。 – Tim

+1

它是browser.driver.currentUrl,然後你需要自己從網址中提取參數或使用一個庫 – erdi

回答

7

爲了得到當前的URL保持在瀏覽器(包括參數):

用途:

def url = browser.driver.currentUrl 

或者(如果您使用的是Page對象模式)

def url = page.driver.currentUrl 

然後你可以使用URIBuilder來提取查詢參數:

導入由根據依賴關係部分添加以下到BuildConfig.groovy的HTTPBuilder模塊:

test 'org.codehaus.groovy.modules.http-builder:http-builder:0.5.2' 

使用提取網址paramters:

def builder = new URIBuilder(url); 
assert 'name' == builder.query.sort; 
assert 'asc' == builder.query.order; 

感謝@erdi指着我在正確的方向。

0

//列表控制器

任何控制器動作加載權之前,將執行在添加此。

def beforeIntereseptor { 

def myUrl = request.request.requestURL // to get all 
//or 
def myUrl = request.request.requestURL.getParameter("ref") 
/* "request.request.requestURL" don't get the desired URL */  
//do soemthing based on your url then 

} 
+0

有沒有辦法做到這一點,而不會影響應用程序代碼?我不想將測試裝置暴露給應用程序。 – Tim

+0

你想在哪裏,你可以使用你的瀏覽器? – danielad

+0

你的意思是使用WebDriver.getCurrentUrl()嗎?如果是這樣,請參閱我上面的評論... – Tim