Geb - Как опросить параметры запроса страницы

У меня есть тест Grails Cucumber с использованием Geb.

Как получить параметры запроса, определенные для текущей страницы?

Например. Учитывая, что текущий URL-адрес страницы www.foo.com/list?sort=name&order=asc

Как проверить значения параметров sort и order?


person Tim    schedule 05.09.2013    source источник
comment
Вы хотите получить текущие параметры запроса страницы, на которой находится браузер?   -  person erdi    schedule 06.09.2013
comment
@erdi - Да, я пытаюсь проверить параметры запроса для текущей страницы. Я пытался использовать page.getDriver().getCurrentUrl(), но это не возвращало параметры. Однако я не уверен, что URL-адрес был изменен правильно (я пытаюсь щелкнуть заголовок столбца для сортировки).   -  person Tim    schedule 07.09.2013
comment
это browser.driver.currentUrl, и тогда вам нужно будет извлечь параметры из URL-адреса самостоятельно или с помощью библиотеки   -  person erdi    schedule 07.09.2013


Ответы (2)


Чтобы получить текущий URL-адрес в браузере (включая параметры):

Использовать:

def url = browser.driver.currentUrl

Или (если вы используете шаблон объекта Page)

def url = page.driver.currentUrl

Затем вы можете использовать URIBuilder для извлечения параметров запроса:

Импортируйте модуль HTTPBuilder, добавив следующее в BuildConfig.groovy в разделе зависимостей:

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

Извлеките параметры URL-адреса, используя:

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

Спасибо @erdi за то, что указал мне правильное направление.

person Tim    schedule 07.09.2013

// добавляем это в контроллер списка

который будет выполняться непосредственно перед загрузкой любого действия контроллера.

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

}
person Daniel Adenew    schedule 05.09.2013
comment
Есть ли способ сделать это, не затрагивая код приложения? Я бы предпочел не предоставлять тестовые приборы приложению. - person Tim; 05.09.2013
comment
где вы хотите, вы можете использовать свой браузер? - person Daniel Adenew; 05.09.2013