Class: Capybara::Poltergeist::Browser
- Inherits:
-
Object
- Object
- Capybara::Poltergeist::Browser
- Defined in:
- lib/capybara/poltergeist/browser.rb
Constant Summary collapse
- ERROR_MAPPINGS =
{ "Poltergeist.JavascriptError" => JavascriptError, "Poltergeist.FrameNotFound" => FrameNotFound }
Instance Attribute Summary collapse
-
#client ⇒ Object
readonly
Returns the value of attribute client.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#server ⇒ Object
readonly
Returns the value of attribute server.
Instance Method Summary collapse
- #all_text(page_id, id) ⇒ Object
- #attribute(page_id, id, name) ⇒ Object
- #body ⇒ Object
- #click(page_id, id) ⇒ Object
- #click_coordinates(x, y) ⇒ Object
- #command(name, *args) ⇒ Object
- #cookies ⇒ Object
- #current_url ⇒ Object
- #debug=(val) ⇒ Object
- #disabled?(page_id, id) ⇒ Boolean
- #double_click(page_id, id) ⇒ Object
- #drag(page_id, id, other_id) ⇒ Object
- #equals(page_id, id, other_id) ⇒ Object
- #evaluate(script) ⇒ Object
- #execute(script) ⇒ Object
- #extensions=(names) ⇒ Object
- #find(method, selector) ⇒ Object
- #find_within(page_id, id, method, selector) ⇒ Object
- #hover(page_id, id) ⇒ Object
-
#initialize(server, client, logger = nil) ⇒ Browser
constructor
A new instance of Browser.
- #js_errors=(val) ⇒ Object
- #network_traffic ⇒ Object
- #remove_cookie(name) ⇒ Object
- #render(path, options = {}) ⇒ Object
- #reset ⇒ Object
- #resize(width, height) ⇒ Object
- #response_headers ⇒ Object
- #restart ⇒ Object
- #select(page_id, id, value) ⇒ Object
- #select_file(page_id, id, value) ⇒ Object
- #set(page_id, id, value) ⇒ Object
- #set_cookie(cookie) ⇒ Object
- #set_headers(headers) ⇒ Object
- #source ⇒ Object
- #status_code ⇒ Object
- #tag_name(page_id, id) ⇒ Object
- #title ⇒ Object
- #trigger(page_id, id, event) ⇒ Object
- #value(page_id, id) ⇒ Object
- #visible?(page_id, id) ⇒ Boolean
- #visible_text(page_id, id) ⇒ Object
- #visit(url) ⇒ Object
- #within_frame(handle, &block) ⇒ Object
- #within_window(name, &block) ⇒ Object
Constructor Details
#initialize(server, client, logger = nil) ⇒ Browser
Returns a new instance of Browser.
14 15 16 17 18 |
# File 'lib/capybara/poltergeist/browser.rb', line 14 def initialize(server, client, logger = nil) @server = server @client = client @logger = logger end |
Instance Attribute Details
#client ⇒ Object (readonly)
Returns the value of attribute client.
12 13 14 |
# File 'lib/capybara/poltergeist/browser.rb', line 12 def client @client end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
12 13 14 |
# File 'lib/capybara/poltergeist/browser.rb', line 12 def logger @logger end |
#server ⇒ Object (readonly)
Returns the value of attribute server.
12 13 14 |
# File 'lib/capybara/poltergeist/browser.rb', line 12 def server @server end |
Instance Method Details
#all_text(page_id, id) ⇒ Object
60 61 62 |
# File 'lib/capybara/poltergeist/browser.rb', line 60 def all_text(page_id, id) command 'all_text', page_id, id end |
#attribute(page_id, id, name) ⇒ Object
68 69 70 |
# File 'lib/capybara/poltergeist/browser.rb', line 68 def attribute(page_id, id, name) command 'attribute', page_id, id, name.to_s end |
#body ⇒ Object
39 40 41 |
# File 'lib/capybara/poltergeist/browser.rb', line 39 def body command 'body' end |
#click(page_id, id) ⇒ Object
127 128 129 |
# File 'lib/capybara/poltergeist/browser.rb', line 127 def click(page_id, id) command 'click', page_id, id end |
#click_coordinates(x, y) ⇒ Object
96 97 98 |
# File 'lib/capybara/poltergeist/browser.rb', line 96 def click_coordinates(x, y) command 'click_coordinates', x, y end |
#command(name, *args) ⇒ Object
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 |
# File 'lib/capybara/poltergeist/browser.rb', line 215 def command(name, *args) = { 'name' => name, 'args' => args } log .inspect json = JSON.load(server.send(JSON.generate())) log json.inspect if json['error'] klass = ERROR_MAPPINGS[json['error']['name']] || BrowserError raise klass.new(json['error']) else json['response'] end rescue DeadClient restart raise end |
#cookies ⇒ Object
184 185 186 |
# File 'lib/capybara/poltergeist/browser.rb', line 184 def Hash[command('cookies').map { || [['name'], Cookie.new()] }] end |
#current_url ⇒ Object
31 32 33 |
# File 'lib/capybara/poltergeist/browser.rb', line 31 def current_url command 'current_url' end |
#debug=(val) ⇒ Object
210 211 212 213 |
# File 'lib/capybara/poltergeist/browser.rb', line 210 def debug=(val) @debug = val command 'set_debug', !!val end |
#disabled?(page_id, id) ⇒ Boolean
92 93 94 |
# File 'lib/capybara/poltergeist/browser.rb', line 92 def disabled?(page_id, id) command 'disabled', page_id, id end |
#double_click(page_id, id) ⇒ Object
131 132 133 |
# File 'lib/capybara/poltergeist/browser.rb', line 131 def double_click(page_id, id) command 'double_click', page_id, id end |
#drag(page_id, id, other_id) ⇒ Object
139 140 141 |
# File 'lib/capybara/poltergeist/browser.rb', line 139 def drag(page_id, id, other_id) command 'drag', page_id, id, other_id end |
#equals(page_id, id, other_id) ⇒ Object
172 173 174 |
# File 'lib/capybara/poltergeist/browser.rb', line 172 def equals(page_id, id, other_id) command('equals', page_id, id, other_id) end |
#evaluate(script) ⇒ Object
100 101 102 |
# File 'lib/capybara/poltergeist/browser.rb', line 100 def evaluate(script) command 'evaluate', script end |
#execute(script) ⇒ Object
104 105 106 |
# File 'lib/capybara/poltergeist/browser.rb', line 104 def execute(script) command 'execute', script end |
#extensions=(names) ⇒ Object
204 205 206 207 208 |
# File 'lib/capybara/poltergeist/browser.rb', line 204 def extensions=(names) Array(names).each do |name| command 'add_extension', name end end |
#find(method, selector) ⇒ Object
51 52 53 54 |
# File 'lib/capybara/poltergeist/browser.rb', line 51 def find(method, selector) result = command('find', method, selector) result['ids'].map { |id| [result['page_id'], id] } end |
#find_within(page_id, id, method, selector) ⇒ Object
56 57 58 |
# File 'lib/capybara/poltergeist/browser.rb', line 56 def find_within(page_id, id, method, selector) command 'find_within', page_id, id, method, selector end |
#hover(page_id, id) ⇒ Object
135 136 137 |
# File 'lib/capybara/poltergeist/browser.rb', line 135 def hover(page_id, id) command 'hover', page_id, id end |
#js_errors=(val) ⇒ Object
200 201 202 |
# File 'lib/capybara/poltergeist/browser.rb', line 200 def js_errors=(val) command 'set_js_errors', !!val end |
#network_traffic ⇒ Object
163 164 165 166 167 168 169 170 |
# File 'lib/capybara/poltergeist/browser.rb', line 163 def network_traffic command('network_traffic').values.map do |event| NetworkTraffic::Request.new( event['request'], event['responseParts'].map { |response| NetworkTraffic::Response.new(response) } ) end end |
#remove_cookie(name) ⇒ Object
196 197 198 |
# File 'lib/capybara/poltergeist/browser.rb', line 196 def (name) command 'remove_cookie', name end |
#render(path, options = {}) ⇒ Object
155 156 157 |
# File 'lib/capybara/poltergeist/browser.rb', line 155 def render(path, = {}) command 'render', path.to_s, !![:full] end |
#reset ⇒ Object
151 152 153 |
# File 'lib/capybara/poltergeist/browser.rb', line 151 def reset command 'reset' end |
#resize(width, height) ⇒ Object
159 160 161 |
# File 'lib/capybara/poltergeist/browser.rb', line 159 def resize(width, height) command 'resize', width, height end |
#response_headers ⇒ Object
180 181 182 |
# File 'lib/capybara/poltergeist/browser.rb', line 180 def response_headers command 'response_headers' end |
#restart ⇒ Object
20 21 22 23 24 25 |
# File 'lib/capybara/poltergeist/browser.rb', line 20 def restart server.restart client.restart self.debug = @debug if @debug end |
#select(page_id, id, value) ⇒ Object
143 144 145 |
# File 'lib/capybara/poltergeist/browser.rb', line 143 def select(page_id, id, value) command 'select', page_id, id, value end |
#select_file(page_id, id, value) ⇒ Object
80 81 82 |
# File 'lib/capybara/poltergeist/browser.rb', line 80 def select_file(page_id, id, value) command 'select_file', page_id, id, value end |
#set(page_id, id, value) ⇒ Object
76 77 78 |
# File 'lib/capybara/poltergeist/browser.rb', line 76 def set(page_id, id, value) command 'set', page_id, id, value end |
#set_cookie(cookie) ⇒ Object
188 189 190 191 192 193 194 |
# File 'lib/capybara/poltergeist/browser.rb', line 188 def () if [:expires] [:expires] = [:expires].to_i * 1000 end command 'set_cookie', end |
#set_headers(headers) ⇒ Object
176 177 178 |
# File 'lib/capybara/poltergeist/browser.rb', line 176 def set_headers(headers) command 'set_headers', headers end |
#source ⇒ Object
43 44 45 |
# File 'lib/capybara/poltergeist/browser.rb', line 43 def source command 'source' end |
#status_code ⇒ Object
35 36 37 |
# File 'lib/capybara/poltergeist/browser.rb', line 35 def status_code command 'status_code' end |
#tag_name(page_id, id) ⇒ Object
84 85 86 |
# File 'lib/capybara/poltergeist/browser.rb', line 84 def tag_name(page_id, id) command('tag_name', page_id, id).downcase end |
#title ⇒ Object
47 48 49 |
# File 'lib/capybara/poltergeist/browser.rb', line 47 def title command 'title' end |
#trigger(page_id, id, event) ⇒ Object
147 148 149 |
# File 'lib/capybara/poltergeist/browser.rb', line 147 def trigger(page_id, id, event) command 'trigger', page_id, id, event.to_s end |
#value(page_id, id) ⇒ Object
72 73 74 |
# File 'lib/capybara/poltergeist/browser.rb', line 72 def value(page_id, id) command 'value', page_id, id end |
#visible?(page_id, id) ⇒ Boolean
88 89 90 |
# File 'lib/capybara/poltergeist/browser.rb', line 88 def visible?(page_id, id) command 'visible', page_id, id end |
#visible_text(page_id, id) ⇒ Object
64 65 66 |
# File 'lib/capybara/poltergeist/browser.rb', line 64 def visible_text(page_id, id) command 'visible_text', page_id, id end |
#visit(url) ⇒ Object
27 28 29 |
# File 'lib/capybara/poltergeist/browser.rb', line 27 def visit(url) command 'visit', url end |
#within_frame(handle, &block) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/capybara/poltergeist/browser.rb', line 108 def within_frame(handle, &block) if handle.is_a?(Capybara::Node::Base) command 'push_frame', handle['id'] else command 'push_frame', handle end yield ensure command 'pop_frame' end |
#within_window(name, &block) ⇒ Object
120 121 122 123 124 125 |
# File 'lib/capybara/poltergeist/browser.rb', line 120 def within_window(name, &block) command 'push_window', name yield ensure command 'pop_window' end |