Class: Capybara::Driver::Akephalos

Inherits:
Base
  • Object
show all
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

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Akephalos

Returns a new instance of Akephalos.



149
150
151
152
153
# File 'lib/akephalos/capybara.rb', line 149

def initialize(app)
  @app = app
  @rack_server = Capybara::Server.new(@app)
  @rack_server.boot if Capybara.run_server
end

Instance Attribute Details

#appObject (readonly)

Returns the value of attribute app.



142
143
144
# File 'lib/akephalos/capybara.rb', line 142

def app
  @app
end

#rack_serverObject (readonly)

Returns the value of attribute rack_server.



142
143
144
# File 'lib/akephalos/capybara.rb', line 142

def rack_server
  @rack_server
end

Class Method Details

.driverClient

Returns an instance of Akephalos::Client.

Returns:

  • (Client)

    an instance of Akephalos::Client



145
146
147
# File 'lib/akephalos/capybara.rb', line 145

def self.driver
  @driver ||= Akephalos::Client.new
end

Instance Method Details

#bodyString

Returns the page’s modified source.

Returns:

  • (String)

    the page’s modified source



168
169
170
# File 'lib/akephalos/capybara.rb', line 168

def body
  page.modified_source
end

#browserObject

Returns the browser.

Returns:

  • the browser



241
242
243
# File 'lib/akephalos/capybara.rb', line 241

def browser
  self.class.driver
end

#cleanup!Object

Deprecated.

This method is deprecated in Capybara’s master branch. Use #reset! instead.

Clear all cookie session data.



195
196
197
# File 'lib/akephalos/capybara.rb', line 195

def cleanup!
  reset!
end

#cookiesObject

Returns the session cookies.

Returns:

  • the session cookies



246
247
248
# File 'lib/akephalos/capybara.rb', line 246

def cookies
  browser.cookies
end

#current_urlString

Returns the page’s current URL.

Returns:

  • (String)

    the page’s current URL



205
206
207
# File 'lib/akephalos/capybara.rb', line 205

def current_url
  page.current_url
end

#evaluate_script(script) ⇒ Object

Execute JavaScript against the current page and return the results.

Parameters:

  • script (String)

    the JavaScript to be executed

Returns:

  • the result of the JavaScript



231
232
233
# File 'lib/akephalos/capybara.rb', line 231

def evaluate_script(script)
  page.evaluate_script script
end

#execute_script(script) ⇒ nil

Execute JavaScript against the current page, discarding any return value.

Parameters:

  • script (String)

    the JavaScript to be executed

Returns:

  • (nil)


223
224
225
# File 'lib/akephalos/capybara.rb', line 223

def execute_script(script)
  page.execute_script script
end

#find(selector) ⇒ Array<Node>

Search for nodes which match the given XPath selector.

Parameters:

  • selector (String)

    XPath query

Returns:

  • (Array<Node>)

    the matched nodes



213
214
215
216
217
# File 'lib/akephalos/capybara.rb', line 213

def find(selector)
  nodes = []
  page.find(selector).each { |node| nodes << Node.new(self, node) }
  nodes
end

#pageObject

Returns the current page.

Returns:

  • the current page



236
237
238
# File 'lib/akephalos/capybara.rb', line 236

def page
  browser.page
end

#reset!Object

Clear all cookie session data.



200
201
202
# File 'lib/akephalos/capybara.rb', line 200

def reset!
  cookies.clear
end

#response_headersHash{String => String}

Returns the page’s response headers.

Returns:

  • (Hash{String => String})

    the page’s response headers



173
174
175
# File 'lib/akephalos/capybara.rb', line 173

def response_headers
  page.response_headers
end

#sourceString

Returns the page’s original source.

Returns:

  • (String)

    the page’s original source



163
164
165
# File 'lib/akephalos/capybara.rb', line 163

def source
  page.source
end

#status_codeInteger

Returns the response’s status code.

Returns:

  • (Integer)

    the response’s status code



178
179
180
# File 'lib/akephalos/capybara.rb', line 178

def status_code
  page.status_code
end

#user_agentString

Returns the current user agent string.

Returns:

  • (String)

    the current user agent string



251
252
253
# File 'lib/akephalos/capybara.rb', line 251

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.

Parameters:

  • user_agent (:default)

    the default user agent

  • user_agent (String)

    the user agent string to use



260
261
262
# File 'lib/akephalos/capybara.rb', line 260

def user_agent=(user_agent)
  browser.user_agent = user_agent
end

#visit(path) ⇒ Object

Visit the given path in the browser.

Parameters:

  • path (String)

    relative path to visit



158
159
160
# File 'lib/akephalos/capybara.rb', line 158

def visit(path)
  browser.visit(url(path))
end

#waitfalse

Disable waiting in Capybara, since waiting is handled directly by Akephalos.

Returns:

  • (false)


268
269
270
# File 'lib/akephalos/capybara.rb', line 268

def wait
  false
end

#within_frame(frame_id, &block) ⇒ Object

Execute the given block within the context of a specified frame.

Parameters:

  • frame_id (String)

    the frame’s id

Raises:

  • (Capybara::ElementNotFound)

    if the frame is not found



186
187
188
189
190
# File 'lib/akephalos/capybara.rb', line 186

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