Class: Capybara::Driver::Akephalos
- Inherits:
-
Base
- Object
- Base
- Capybara::Driver::Akephalos
- Defined in:
- lib/akephalos/capybara.rb
Overview
Driver class exposed to Capybara. It implements Capybara’s full driver API, and is the entry point for interaction between the test suites and HtmlUnit.
This class and Capybara::Driver::Akephalos::Node
are written to run on both MRI and JRuby, and is agnostic whether the Akephalos::Client instance is used directly or over DRb.
Defined Under Namespace
Classes: Node
Instance Attribute Summary collapse
-
#app ⇒ Object
readonly
Returns the value of attribute app.
-
#rack_server ⇒ Object
readonly
Returns the value of attribute rack_server.
Class Method Summary collapse
-
.driver ⇒ Client
An instance of Akephalos::Client.
Instance Method Summary collapse
-
#body ⇒ String
page.modified_source will return a string with html entities converted into the unicode equivalent but the string will be marked as ASCII-8BIT which causes conversion issues so we force the encoding to UTF-8 (ruby 1.9 only).
-
#browser ⇒ Object
The browser.
-
#cleanup! ⇒ Object
deprecated
Deprecated.
This method is deprecated in Capybara’s master branch. Use #reset! instead.
-
#cookies ⇒ Object
The session cookies.
-
#current_url ⇒ String
The page’s current URL.
-
#evaluate_script(script) ⇒ Object
Execute JavaScript against the current page and return the results.
-
#execute_script(script) ⇒ nil
Execute JavaScript against the current page, discarding any return value.
-
#find(selector) ⇒ Array<Node>
Search for nodes which match the given XPath selector.
-
#initialize(app) ⇒ Akephalos
constructor
A new instance of Akephalos.
-
#page ⇒ Object
The current page.
-
#reset! ⇒ Object
Clear all cookie session data.
-
#response_headers ⇒ Hash{String => String}
The page’s response headers.
-
#source ⇒ String
The page’s original source.
-
#status_code ⇒ Integer
The response’s status code.
-
#user_agent ⇒ String
The current user agent string.
-
#user_agent=(user_agent) ⇒ Object
Set the User-Agent header for this session.
-
#visit(path) ⇒ Object
Visit the given path in the browser.
-
#wait ⇒ false
Disable waiting in Capybara, since waiting is handled directly by Akephalos.
-
#within_frame(frame_id, &block) ⇒ Object
Execute the given block within the context of a specified frame.
Constructor Details
#initialize(app) ⇒ Akephalos
Returns a new instance of Akephalos.
170 171 172 173 174 |
# File 'lib/akephalos/capybara.rb', line 170 def initialize(app) @app = app @rack_server = Capybara::Server.new(@app) @rack_server.boot if Capybara.run_server end |
Instance Attribute Details
#app ⇒ Object (readonly)
Returns the value of attribute app.
163 164 165 |
# File 'lib/akephalos/capybara.rb', line 163 def app @app end |
#rack_server ⇒ Object (readonly)
Returns the value of attribute rack_server.
163 164 165 |
# File 'lib/akephalos/capybara.rb', line 163 def rack_server @rack_server end |
Class Method Details
.driver ⇒ Client
Returns an instance of Akephalos::Client.
166 167 168 |
# File 'lib/akephalos/capybara.rb', line 166 def self.driver @driver ||= Akephalos::Client.new end |
Instance Method Details
#body ⇒ String
page.modified_source will return a string with html entities converted into the unicode equivalent but the string will be marked as ASCII-8BIT which causes conversion issues so we force the encoding to UTF-8 (ruby 1.9 only)
194 195 196 197 198 199 200 201 202 |
# File 'lib/akephalos/capybara.rb', line 194 def body body_source = page.modified_source if body_source.respond_to?(:force_encoding) body_source.force_encoding("UTF-8") else body_source end end |
#browser ⇒ Object
Returns the browser.
273 274 275 |
# File 'lib/akephalos/capybara.rb', line 273 def browser self.class.driver end |
#cleanup! ⇒ Object
This method is deprecated in Capybara’s master branch. Use #reset! instead.
Clear all cookie session data.
227 228 229 |
# File 'lib/akephalos/capybara.rb', line 227 def cleanup! reset! end |
#cookies ⇒ Object
Returns the session cookies.
278 279 280 |
# File 'lib/akephalos/capybara.rb', line 278 def browser. end |
#current_url ⇒ String
Returns the page’s current URL.
237 238 239 |
# File 'lib/akephalos/capybara.rb', line 237 def current_url page.current_url end |
#evaluate_script(script) ⇒ Object
Execute JavaScript against the current page and return the results.
263 264 265 |
# File 'lib/akephalos/capybara.rb', line 263 def evaluate_script(script) page.evaluate_script script end |
#execute_script(script) ⇒ nil
Execute JavaScript against the current page, discarding any return value.
255 256 257 |
# File 'lib/akephalos/capybara.rb', line 255 def execute_script(script) page.execute_script script end |
#find(selector) ⇒ Array<Node>
Search for nodes which match the given XPath selector.
245 246 247 248 249 |
# File 'lib/akephalos/capybara.rb', line 245 def find(selector) nodes = [] page.find(selector).each { |node| nodes << Node.new(self, node) } nodes end |
#page ⇒ Object
Returns the current page.
268 269 270 |
# File 'lib/akephalos/capybara.rb', line 268 def page browser.page end |
#reset! ⇒ Object
Clear all cookie session data.
232 233 234 |
# File 'lib/akephalos/capybara.rb', line 232 def reset! .clear end |
#response_headers ⇒ Hash{String => String}
Returns the page’s response headers.
205 206 207 |
# File 'lib/akephalos/capybara.rb', line 205 def response_headers page.response_headers end |
#source ⇒ String
Returns the page’s original source.
184 185 186 |
# File 'lib/akephalos/capybara.rb', line 184 def source page.source end |
#status_code ⇒ Integer
Returns the response’s status code.
210 211 212 |
# File 'lib/akephalos/capybara.rb', line 210 def status_code page.status_code end |
#user_agent ⇒ String
Returns the current user agent string.
283 284 285 |
# File 'lib/akephalos/capybara.rb', line 283 def user_agent browser.user_agent end |
#user_agent=(user_agent) ⇒ Object
Set the User-Agent header for this session. If :default is given, the User-Agent header will be reset to the default browser’s user agent.
292 293 294 |
# File 'lib/akephalos/capybara.rb', line 292 def user_agent=(user_agent) browser.user_agent = user_agent end |
#visit(path) ⇒ Object
Visit the given path in the browser.
179 180 181 |
# File 'lib/akephalos/capybara.rb', line 179 def visit(path) browser.visit(url(path)) end |
#wait ⇒ false
Disable waiting in Capybara, since waiting is handled directly by Akephalos.
300 301 302 |
# File 'lib/akephalos/capybara.rb', line 300 def wait false end |
#within_frame(frame_id, &block) ⇒ Object
Execute the given block within the context of a specified frame.
218 219 220 221 222 |
# File 'lib/akephalos/capybara.rb', line 218 def within_frame(frame_id, &block) unless page.within_frame(frame_id, &block) raise Capybara::ElementNotFound, "Unable to find frame with id '#{frame_id}'" end end |