Let driver implementations provde a #response(RackResponse) so that Session can get body and response_headers
This commit is contained in:
parent
1bd4033655
commit
083382b675
|
@ -7,10 +7,6 @@ class Capybara::Driver::Base
|
|||
raise "Not implemented"
|
||||
end
|
||||
|
||||
def body
|
||||
raise "Not implemented"
|
||||
end
|
||||
|
||||
def evaluate_script(script)
|
||||
raise Capybara::NotSupportedByDriverError
|
||||
end
|
||||
|
@ -18,4 +14,9 @@ class Capybara::Driver::Base
|
|||
def wait?
|
||||
false
|
||||
end
|
||||
|
||||
def response
|
||||
raise "Not implemented"
|
||||
end
|
||||
|
||||
end
|
|
@ -80,9 +80,9 @@ class Capybara::Driver::Celerity < Capybara::Driver::Base
|
|||
def visit(path)
|
||||
browser.goto(url(path))
|
||||
end
|
||||
|
||||
def body
|
||||
browser.html
|
||||
|
||||
def response
|
||||
Rack::MockResponse.new(browser.status_code, browser.response_headers, browser.html)
|
||||
end
|
||||
|
||||
def find(selector)
|
||||
|
|
|
@ -134,8 +134,10 @@ class Capybara::Driver::RackTest < Capybara::Driver::Base
|
|||
get(path, attributes)
|
||||
follow_redirect! while response.redirect?
|
||||
cache_body
|
||||
response
|
||||
end
|
||||
|
||||
|
||||
|
||||
def submit(path, attributes)
|
||||
post(path, attributes)
|
||||
follow_redirect! while response.redirect?
|
||||
|
|
|
@ -72,10 +72,14 @@ class Capybara::Driver::Selenium < Capybara::Driver::Base
|
|||
driver.navigate.to(url(path))
|
||||
end
|
||||
|
||||
def body
|
||||
driver.page_source
|
||||
def response
|
||||
#Can I get a response code and headers from Selenium?
|
||||
#Maybe we should just plug in the location here
|
||||
#and leave more header involved stuff for another driver
|
||||
#(e.g. celerity)
|
||||
Rack::MockResponse.new(-1, {}, driver.page_source)
|
||||
end
|
||||
|
||||
|
||||
def find(selector)
|
||||
driver.find_elements(:xpath, selector).map { |node| Node.new(self, node) }
|
||||
end
|
||||
|
|
|
@ -16,6 +16,7 @@ module Capybara
|
|||
end
|
||||
|
||||
def driver
|
||||
|
||||
@driver ||= case mode
|
||||
when :rack_test
|
||||
Capybara::Driver::RackTest.new(app)
|
||||
|
@ -28,6 +29,10 @@ module Capybara
|
|||
end
|
||||
end
|
||||
|
||||
def response_headers
|
||||
driver.response.headers
|
||||
end
|
||||
|
||||
def visit(path)
|
||||
driver.visit(path)
|
||||
end
|
||||
|
@ -95,7 +100,7 @@ module Capybara
|
|||
end
|
||||
|
||||
def body
|
||||
driver.body
|
||||
driver.response.body
|
||||
end
|
||||
|
||||
def has_content?(content)
|
||||
|
|
Loading…
Reference in New Issue