Как проверить код ответа с помощью Capybara + Selenium - PullRequest
30 голосов
/ 27 октября 2011

У меня есть следующая спецификация:

it "deletes post", :js => true do 
...
...
page.status_code.should = '404'

end 

Строка page.status_code выдаёт мне эту ошибку:

Capybara::NotSupportedByDriverError

Как проверить код состояния страницы?

Ответы [ 6 ]

44 голосов
/ 06 марта 2013

в сторону.Эта строка

page.status_code.should = '404'

должна быть

page.status_code.should == 404

Это работает для меня с capybara-webkit.

18 голосов
/ 27 октября 2011

status_code в настоящее время не поддерживается драйвером Selenium.Вам нужно будет написать другой тест, чтобы проверить код статуса ответа.

3 голосов
/ 23 октября 2014

Веб-драйвер Selenium не реализует код_состояния, и нет прямого способа проверить код_ответа с помощью селена (по выбору разработчика).

Для его проверки я добавил в свой файл layout / application.html.erb:

<html code="<%= response.try(:code) if defined?(response) %>">[...]</html>

А потом в моем тесте:

def no_error?
  response_code = page.first('html')[:code]
  assert (response_code == '200'), "Response code should be 200 : got #{response_code}"
end
3 голосов
/ 27 октября 2011

Либо переключитесь на другой драйвер (например, rack-test) для этого теста, либо проверьте, что отображаемая страница является страницей 404 (должна содержать содержимое «Not Found» в h1).

Как сказал @eugenSelenium не поддерживает коды состояния.

2 голосов
/ 30 ноября 2016

Попробуйте

expect(page).to have_http_status(200)
1 голос
/ 12 января 2017

Используйте js, чтобы сделать запрос и получить статус, как показано ниже:

js_script = <<JSS
xhr = new XMLHttpRequest();
xhr.open('GET', '#{src}', true);
xhr.send();
JSS
actual.execute_script(js_script)
status = actual.evaluate_script('xhr.status') # get js variable value

Проверьте https://gist.github.com/yovasx2/1c767114f2e003474a546c89ab4f90db для более подробной информации

...