我有以下规格:
it "deletes post", :js => true do
...
...
page.status_code.should = '404'
end
page.status_code
行给了我这个错误:
Capybara::NotSupportedByDriverError
如何查看页面的状态代码?
答案 0 :(得分:44)
暂且不说。这一行
page.status_code.should = '404'
应该是
page.status_code.should == 404
这对我来说适用于capybara-webkit。
答案 1 :(得分:18)
status_code
。您需要编写不同的测试来检查响应状态代码。
答案 2 :(得分:3)
切换到该测试的另一个驱动程序(如rack-test
),或者测试显示的页面是否为404页面(在h1中应该包含“Not Found”内容)。
正如@eugen所说,Selenium不支持状态码。
答案 3 :(得分:3)
Selenium web驱动程序没有实现status_code,也没有直接的方法来测试使用selenium的response_code(开发人员的选择)。
为了测试它,我在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
答案 4 :(得分:2)
试一试
expect(page).to have_http_status(200)
答案 5 :(得分:1)
使用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了解详情