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, "Poltergeist.InvalidSelector" => InvalidSelector, "Poltergeist.StatusFailError" => StatusFailError }
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
- #add_header(header, permanent) ⇒ Object
- #add_headers(headers) ⇒ Object
- #all_text(page_id, id) ⇒ Object
- #attribute(page_id, id, name) ⇒ Object
- #attributes(page_id, id) ⇒ Object
- #body ⇒ Object
- #clear_network_traffic ⇒ Object
- #click(page_id, id) ⇒ Object
- #click_coordinates(x, y) ⇒ Object
- #command(name, *args) ⇒ Object
- #cookies ⇒ Object
- #cookies_enabled=(flag) ⇒ Object
- #current_url ⇒ Object
- #debug=(val) ⇒ Object
- #delete_text(page_id, id) ⇒ 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
- #get_headers ⇒ Object
- #go_back ⇒ Object
- #go_forward ⇒ 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
- #parents(page_id, id) ⇒ Object
- #remove_cookie(name) ⇒ Object
- #render(path, options = {}) ⇒ Object
- #render_base64(format, options = {}) ⇒ Object
- #reset ⇒ Object
- #resize(width, height) ⇒ Object
- #response_headers ⇒ Object
- #restart ⇒ Object
- #right_click(page_id, id) ⇒ Object
- #scroll_to(left, top) ⇒ Object
- #select(page_id, id, value) ⇒ Object
- #select_file(page_id, id, value) ⇒ Object
- #send_keys(page_id, id, keys) ⇒ Object
- #set(page_id, id, value) ⇒ Object
- #set_cookie(cookie) ⇒ Object
- #set_headers(headers) ⇒ Object
- #set_http_auth(user, password) ⇒ Object
- #set_paper_size(size) ⇒ Object
- #set_zoom_factor(zoom_factor) ⇒ 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
- #window_handles ⇒ 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.
16 17 18 19 20 |
# File 'lib/capybara/poltergeist/browser.rb', line 16 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.
14 15 16 |
# File 'lib/capybara/poltergeist/browser.rb', line 14 def client @client end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
14 15 16 |
# File 'lib/capybara/poltergeist/browser.rb', line 14 def logger @logger end |
#server ⇒ Object (readonly)
Returns the value of attribute server.
14 15 16 |
# File 'lib/capybara/poltergeist/browser.rb', line 14 def server @server end |
Instance Method Details
#add_header(header, permanent) ⇒ Object
236 237 238 |
# File 'lib/capybara/poltergeist/browser.rb', line 236 def add_header(header, permanent) command 'add_header', header, permanent end |
#add_headers(headers) ⇒ Object
232 233 234 |
# File 'lib/capybara/poltergeist/browser.rb', line 232 def add_headers(headers) command 'add_headers', headers end |
#all_text(page_id, id) ⇒ Object
66 67 68 |
# File 'lib/capybara/poltergeist/browser.rb', line 66 def all_text(page_id, id) command 'all_text', page_id, id end |
#attribute(page_id, id, name) ⇒ Object
82 83 84 |
# File 'lib/capybara/poltergeist/browser.rb', line 82 def attribute(page_id, id, name) command 'attribute', page_id, id, name.to_s end |
#attributes(page_id, id) ⇒ Object
78 79 80 |
# File 'lib/capybara/poltergeist/browser.rb', line 78 def attributes(page_id, id) command 'attributes', page_id, id end |
#body ⇒ Object
41 42 43 |
# File 'lib/capybara/poltergeist/browser.rb', line 41 def body command 'body' end |
#clear_network_traffic ⇒ Object
216 217 218 |
# File 'lib/capybara/poltergeist/browser.rb', line 216 def clear_network_traffic command('clear_network_traffic') end |
#click(page_id, id) ⇒ Object
145 146 147 |
# File 'lib/capybara/poltergeist/browser.rb', line 145 def click(page_id, id) command 'click', page_id, id end |
#click_coordinates(x, y) ⇒ Object
110 111 112 |
# File 'lib/capybara/poltergeist/browser.rb', line 110 def click_coordinates(x, y) command 'click_coordinates', x, y end |
#command(name, *args) ⇒ Object
283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 |
# File 'lib/capybara/poltergeist/browser.rb', line 283 def command(name, *args) = JSON.dump({ 'name' => name, 'args' => args }) log response = server.send() log response json = JSON.load(response) 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
244 245 246 |
# File 'lib/capybara/poltergeist/browser.rb', line 244 def Hash[command('cookies').map { || [['name'], Cookie.new()] }] end |
#cookies_enabled=(flag) ⇒ Object
260 261 262 |
# File 'lib/capybara/poltergeist/browser.rb', line 260 def (flag) command 'cookies_enabled', !!flag end |
#current_url ⇒ Object
33 34 35 |
# File 'lib/capybara/poltergeist/browser.rb', line 33 def current_url command 'current_url' end |
#debug=(val) ⇒ Object
278 279 280 281 |
# File 'lib/capybara/poltergeist/browser.rb', line 278 def debug=(val) @debug = val command 'set_debug', !!val end |
#delete_text(page_id, id) ⇒ Object
74 75 76 |
# File 'lib/capybara/poltergeist/browser.rb', line 74 def delete_text(page_id, id) command 'delete_text', page_id, id end |
#disabled?(page_id, id) ⇒ Boolean
106 107 108 |
# File 'lib/capybara/poltergeist/browser.rb', line 106 def disabled?(page_id, id) command 'disabled', page_id, id end |
#double_click(page_id, id) ⇒ Object
153 154 155 |
# File 'lib/capybara/poltergeist/browser.rb', line 153 def double_click(page_id, id) command 'double_click', page_id, id end |
#drag(page_id, id, other_id) ⇒ Object
161 162 163 |
# File 'lib/capybara/poltergeist/browser.rb', line 161 def drag(page_id, id, other_id) command 'drag', page_id, id, other_id end |
#equals(page_id, id, other_id) ⇒ Object
220 221 222 |
# File 'lib/capybara/poltergeist/browser.rb', line 220 def equals(page_id, id, other_id) command('equals', page_id, id, other_id) end |
#evaluate(script) ⇒ Object
114 115 116 |
# File 'lib/capybara/poltergeist/browser.rb', line 114 def evaluate(script) command 'evaluate', script end |
#execute(script) ⇒ Object
118 119 120 |
# File 'lib/capybara/poltergeist/browser.rb', line 118 def execute(script) command 'execute', script end |
#extensions=(names) ⇒ Object
272 273 274 275 276 |
# File 'lib/capybara/poltergeist/browser.rb', line 272 def extensions=(names) Array(names).each do |name| command 'add_extension', name end end |
#find(method, selector) ⇒ Object
57 58 59 60 |
# File 'lib/capybara/poltergeist/browser.rb', line 57 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
62 63 64 |
# File 'lib/capybara/poltergeist/browser.rb', line 62 def find_within(page_id, id, method, selector) command 'find_within', page_id, id, method, selector end |
#get_headers ⇒ Object
224 225 226 |
# File 'lib/capybara/poltergeist/browser.rb', line 224 def get_headers command 'get_headers' end |
#go_back ⇒ Object
303 304 305 |
# File 'lib/capybara/poltergeist/browser.rb', line 303 def go_back command 'go_back' end |
#go_forward ⇒ Object
307 308 309 |
# File 'lib/capybara/poltergeist/browser.rb', line 307 def go_forward command 'go_forward' end |
#hover(page_id, id) ⇒ Object
157 158 159 |
# File 'lib/capybara/poltergeist/browser.rb', line 157 def hover(page_id, id) command 'hover', page_id, id end |
#js_errors=(val) ⇒ Object
268 269 270 |
# File 'lib/capybara/poltergeist/browser.rb', line 268 def js_errors=(val) command 'set_js_errors', !!val end |
#network_traffic ⇒ Object
207 208 209 210 211 212 213 214 |
# File 'lib/capybara/poltergeist/browser.rb', line 207 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 |
#parents(page_id, id) ⇒ Object
53 54 55 |
# File 'lib/capybara/poltergeist/browser.rb', line 53 def parents(page_id, id) command 'parents', page_id, id end |
#remove_cookie(name) ⇒ Object
256 257 258 |
# File 'lib/capybara/poltergeist/browser.rb', line 256 def (name) command 'remove_cookie', name end |
#render(path, options = {}) ⇒ Object
181 182 183 184 |
# File 'lib/capybara/poltergeist/browser.rb', line 181 def render(path, = {}) () command 'render', path.to_s, !![:full], [:selector] end |
#render_base64(format, options = {}) ⇒ Object
186 187 188 189 |
# File 'lib/capybara/poltergeist/browser.rb', line 186 def render_base64(format, = {}) () command 'render_base64', format.to_s, !![:full], [:selector] end |
#reset ⇒ Object
173 174 175 |
# File 'lib/capybara/poltergeist/browser.rb', line 173 def reset command 'reset' end |
#resize(width, height) ⇒ Object
199 200 201 |
# File 'lib/capybara/poltergeist/browser.rb', line 199 def resize(width, height) command 'resize', width, height end |
#response_headers ⇒ Object
240 241 242 |
# File 'lib/capybara/poltergeist/browser.rb', line 240 def response_headers command 'response_headers' end |
#restart ⇒ Object
22 23 24 25 26 27 |
# File 'lib/capybara/poltergeist/browser.rb', line 22 def restart server.restart client.restart self.debug = @debug if @debug end |
#right_click(page_id, id) ⇒ Object
149 150 151 |
# File 'lib/capybara/poltergeist/browser.rb', line 149 def right_click(page_id, id) command 'right_click', page_id, id end |
#scroll_to(left, top) ⇒ Object
177 178 179 |
# File 'lib/capybara/poltergeist/browser.rb', line 177 def scroll_to(left, top) command 'scroll_to', left, top end |
#select(page_id, id, value) ⇒ Object
165 166 167 |
# File 'lib/capybara/poltergeist/browser.rb', line 165 def select(page_id, id, value) command 'select', page_id, id, value end |
#select_file(page_id, id, value) ⇒ Object
94 95 96 |
# File 'lib/capybara/poltergeist/browser.rb', line 94 def select_file(page_id, id, value) command 'select_file', page_id, id, value end |
#send_keys(page_id, id, keys) ⇒ Object
203 204 205 |
# File 'lib/capybara/poltergeist/browser.rb', line 203 def send_keys(page_id, id, keys) command 'send_keys', page_id, id, normalize_keys(keys) end |
#set(page_id, id, value) ⇒ Object
90 91 92 |
# File 'lib/capybara/poltergeist/browser.rb', line 90 def set(page_id, id, value) command 'set', page_id, id, value end |
#set_cookie(cookie) ⇒ Object
248 249 250 251 252 253 254 |
# File 'lib/capybara/poltergeist/browser.rb', line 248 def () if [:expires] [:expires] = [:expires].to_i * 1000 end command 'set_cookie', end |
#set_headers(headers) ⇒ Object
228 229 230 |
# File 'lib/capybara/poltergeist/browser.rb', line 228 def set_headers(headers) command 'set_headers', headers end |
#set_http_auth(user, password) ⇒ Object
264 265 266 |
# File 'lib/capybara/poltergeist/browser.rb', line 264 def set_http_auth(user, password) command 'set_http_auth', user, password end |
#set_paper_size(size) ⇒ Object
195 196 197 |
# File 'lib/capybara/poltergeist/browser.rb', line 195 def set_paper_size(size) command 'set_paper_size', size end |
#set_zoom_factor(zoom_factor) ⇒ Object
191 192 193 |
# File 'lib/capybara/poltergeist/browser.rb', line 191 def set_zoom_factor(zoom_factor) command 'set_zoom_factor', zoom_factor end |
#source ⇒ Object
45 46 47 |
# File 'lib/capybara/poltergeist/browser.rb', line 45 def source command 'source' end |
#status_code ⇒ Object
37 38 39 |
# File 'lib/capybara/poltergeist/browser.rb', line 37 def status_code command 'status_code' end |
#tag_name(page_id, id) ⇒ Object
98 99 100 |
# File 'lib/capybara/poltergeist/browser.rb', line 98 def tag_name(page_id, id) command('tag_name', page_id, id).downcase end |
#title ⇒ Object
49 50 51 |
# File 'lib/capybara/poltergeist/browser.rb', line 49 def title command 'title' end |
#trigger(page_id, id, event) ⇒ Object
169 170 171 |
# File 'lib/capybara/poltergeist/browser.rb', line 169 def trigger(page_id, id, event) command 'trigger', page_id, id, event.to_s end |
#value(page_id, id) ⇒ Object
86 87 88 |
# File 'lib/capybara/poltergeist/browser.rb', line 86 def value(page_id, id) command 'value', page_id, id end |
#visible?(page_id, id) ⇒ Boolean
102 103 104 |
# File 'lib/capybara/poltergeist/browser.rb', line 102 def visible?(page_id, id) command 'visible', page_id, id end |
#visible_text(page_id, id) ⇒ Object
70 71 72 |
# File 'lib/capybara/poltergeist/browser.rb', line 70 def visible_text(page_id, id) command 'visible_text', page_id, id end |
#visit(url) ⇒ Object
29 30 31 |
# File 'lib/capybara/poltergeist/browser.rb', line 29 def visit(url) command 'visit', url end |
#window_handles ⇒ Object
134 135 136 |
# File 'lib/capybara/poltergeist/browser.rb', line 134 def window_handles command 'pages' end |
#within_frame(handle, &block) ⇒ Object
122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/capybara/poltergeist/browser.rb', line 122 def within_frame(handle, &block) if handle.is_a?(Capybara::Node::Base) command 'push_frame', handle[:name] || handle[:id] else command 'push_frame', handle end yield ensure command 'pop_frame' end |
#within_window(name, &block) ⇒ Object
138 139 140 141 142 143 |
# File 'lib/capybara/poltergeist/browser.rb', line 138 def within_window(name, &block) command 'push_window', name yield ensure command 'pop_window' end |