Class: Celerity::Browser
- Inherits:
-
Object
- Object
- Celerity::Browser
- Includes:
- Container, XpathSupport
- Defined in:
- lib/celerity/browser.rb,
lib/celerity/watir_compatibility.rb
Class Attribute Summary collapse
-
.attach_timeout ⇒ Object
Added for Watir compatibility - not in use by Celerity.
-
.speed ⇒ Object
Added for Watir compatibility - not in use by Celerity.
-
.visible ⇒ Object
Added for Watir compatibility - not in use by Celerity.
Instance Attribute Summary collapse
-
#charset ⇒ Object
Returns the value of attribute charset.
-
#headers ⇒ Object
Returns the value of attribute headers.
-
#object ⇒ Object
Returns the value of attribute object.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#page ⇒ Object
Returns the value of attribute page.
-
#viewer ⇒ Object
readonly
Returns the value of attribute viewer.
-
#visible ⇒ Object
Added for Watir compatibility - not in use by Celerity.
-
#webclient ⇒ Object
readonly
Returns the value of attribute webclient.
Attributes included from Container
Class Method Summary collapse
-
.attach(*args) ⇒ Object
Not implemented.
-
.each ⇒ Object
Added for Watir compatibility - not in use by Celerity.
-
.start(uri) ⇒ Celerity::Browser
(also: start_window)
Initialize a browser and go to the given URL.
Instance Method Summary collapse
-
#add_checker(checker = nil) {|browser| ... } ⇒ Object
Add a ‘checker’ proc that will be run on every page load.
-
#add_cookie(domain, name, value, opts = {}) ⇒ Object
Add a cookie with the given parameters (Celerity only).
-
#add_listener(type, &block) ⇒ Object
Add a listener block for one of the available types.
-
#assert_exists ⇒ Object
private
Check that we have a @page object.
-
#asynchronized {|browser| ... } ⇒ Object
Allows you to temporarliy switch to HtmlUnit’s default AjaxController, so ajax calls are performed asynchronously.
-
#back ⇒ String
Goto back one history item.
-
#bring_to_front ⇒ Object
Added for Watir compatibility - not in use by Celerity.
-
#clear_cache ⇒ Object
Clears the cache of “compiled JavaScript files and parsed CSS snippets”.
-
#clear_cookies ⇒ Object
Clears all cookies.
-
#close ⇒ Object
Unsets the current page / closes all windows.
-
#confirm(bool, &block) ⇒ Object
Specify a boolean value to click either ‘OK’ or ‘Cancel’ in any confirm dialogs that might show up during the duration of the given block.
-
#contains_text(expected_text) ⇒ Numeric?
Check if the current page contains the given text.
-
#content_type ⇒ String
Content-type as in ‘text/html’.
-
#cookies ⇒ Hash<domain, Hash<name, value>>
Get the cookies for this session.
-
#credentials=(string) ⇒ Object
Set the credentials used for basic HTTP authentication.
- #css ⇒ Object
-
#css=(bool) ⇒ Object
Turn on/off CSS loading.
-
#debug_web_connection(name, &blk) ⇒ Object
Start or stop HtmlUnit’s DebuggingWebConnection.
-
#disable_checker(checker) ⇒ Object
Remove the given checker from the list of checkers.
-
#disable_event_listener ⇒ Object
private
Disable Celerity’s internal WebWindowEventListener.
-
#document ⇒ HtmlUnit::HtmlHtml
The underlying HtmlUnit document.
-
#enable_event_listener ⇒ Object
private
Enable Celerity’s internal WebWindowEventListener.
-
#execute_script(source) ⇒ Object
Execute the given JavaScript on the current page.
-
#exist? ⇒ true, false
(also: #exists?)
Checks if we have a page currently loaded.
-
#focused_element ⇒ Object
Returns the element that currently has the focus (Celerity only).
-
#forward ⇒ String
Go forward one history item.
-
#goto(uri) ⇒ String
Goto the given URL.
-
#html ⇒ String
The HTML content of the current page.
-
#ignore_pattern=(regexp) ⇒ Object
If a request is made to an URL that matches the pattern set here, Celerity will ignore the request and return an empty page with content type “text/html” instead.
-
#initialize(opts = {}) ⇒ Celerity::Browser
constructor
Creates a browser object.
- #inspect ⇒ Object
-
#io ⇒ IO?
Page contents as an IO, returns nil if no page is loaded.
- #javascript_enabled ⇒ Object
-
#javascript_enabled=(bool) ⇒ Object
Turn on/off JavaScript execution.
- #javascript_exceptions ⇒ Object
-
#javascript_exceptions=(bool) ⇒ Object
Turn on/off javascript exceptions.
-
#log_level ⇒ Symbol
:finest, :finer, :fine, :config, :info, :warning, :severe, or :off, :all.
-
#log_level=(level) ⇒ Object
Set Java log level (default is :warning, can be any of :all, :finest, :finer, :fine, :config, :info, :warning, :severe, :off).
-
#refresh ⇒ Object
Refresh the current page.
- #refresh_handler=(symbol) ⇒ Object
-
#remove_cookie(domain, name) ⇒ Object
Remove the cookie with the given domain and name (Celerity only).
- #remove_listener(type, block) ⇒ Object
-
#response_headers ⇒ Hash
Response headers as a hash.
-
#resynchronized {|browser| ... } ⇒ Object
Allows you to temporarily switch to HtmlUnit’s NicelyResynchronizingAjaxController to resynchronize ajax calls.
-
#secure_ssl=(bool) ⇒ Object
Turn on/off secure SSL.
-
#send_keys(keys) ⇒ Object
experimental - should be removed?.
-
#speed=(s) ⇒ Object
Added for Watir compatibility - not in use by Celerity.
-
#status ⇒ String
The value of window.status.
-
#status_code ⇒ Fixnum
Status code of the last request.
- #status_code_exceptions ⇒ Object
-
#status_code_exceptions=(bool) ⇒ Object
Turn on/off status code exceptions.
-
#text ⇒ String
A text representation of the current page.
-
#title ⇒ String
The title of the current page.
- #trace_javascript(debugger_klass = Celerity::JavascriptDebugger, &blk) ⇒ Object
-
#url ⇒ String
The URL of the current page.
-
#visual_debugger ⇒ Object
Open the JavaScript debugger GUI.
-
#wait ⇒ Object
Wait for javascript jobs to finish.
-
#wait_until(timeout = 30) {|browser| ... } ⇒ Object
Wait until the given block evaluates to true (Celerity only).
-
#wait_while(timeout = 30) {|browser| ... } ⇒ Object
Wait while the given block evaluates to true (Celerity only).
-
#xml ⇒ String
The XML representation of the DOM.
Methods included from XpathSupport
#element_by_xpath, #element_from_dom_node, #elements_by_xpath
Methods included from Container
#area, #areas, #button, #buttons, #cell, #cells, #check_box, #checkboxes, #container=, #dd, #dds, #del, #dels, #div, #divs, #dl, #dls, #dt, #dts, #em, #ems, #file_field, #file_fields, #form, #forms, #frame, #frames, #h1, #h1s, #h2, #h2s, #h3, #h3s, #h4, #h4s, #h5, #h5s, #h6, #h6s, #hidden, #hiddens, #image, #images, #ins, #inses, #label, #labels, #li, #link, #links, #lis, #map, #maps, #meta, #metas, #ol, #ols, #option, #p, #pre, #pres, #ps, #radio, #radios, #row, #rows, #select_list, #select_lists, #span, #spans, #strong, #strongs, #table, #tables, #tbodies, #tbody, #text_field, #text_fields, #tfoot, #tfoots, #th, #thead, #theads, #ths, #ul, #uls
Methods included from ShortInspect
Constructor Details
#initialize(opts = {}) ⇒ Celerity::Browser
Creates a browser object.
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/celerity/browser.rb', line 56 def initialize(opts = {}) unless opts.is_a?(Hash) raise TypeError, "wrong argument type #{opts.class}, expected Hash" end unless (render_types = [:html, :xml, nil, 'html', 'xml']).include?(opts[:render]) raise ArgumentError, "expected one of #{render_types.inspect} for key :render" end @options = opts.dup # keep the unmodified version around as well opts = opts.dup # we'll delete from opts, so dup to avoid side effects @render_type = opts.delete(:render) || :html @charset = opts.delete(:charset) || "UTF-8" @headers = {} @page = nil @error_checkers = [] @browser = self # for Container#browser setup_webclient opts setup_viewer opts.delete(:viewer) self.log_level = opts.delete(:log_level) || :off raise ArgumentError, "unknown option #{opts.inspect}" unless opts.empty? end |
Class Attribute Details
.attach_timeout ⇒ Object
Added for Watir compatibility - not in use by Celerity
6 7 8 |
# File 'lib/celerity/watir_compatibility.rb', line 6 def attach_timeout @attach_timeout end |
.speed ⇒ Object
Added for Watir compatibility - not in use by Celerity
6 7 8 |
# File 'lib/celerity/watir_compatibility.rb', line 6 def speed @speed end |
.visible ⇒ Object
Added for Watir compatibility - not in use by Celerity
6 7 8 |
# File 'lib/celerity/watir_compatibility.rb', line 6 def visible @visible end |
Instance Attribute Details
#charset ⇒ Object
Returns the value of attribute charset.
6 7 8 |
# File 'lib/celerity/browser.rb', line 6 def charset @charset end |
#headers ⇒ Object
Returns the value of attribute headers.
6 7 8 |
# File 'lib/celerity/browser.rb', line 6 def headers @headers end |
#object ⇒ Object
Returns the value of attribute object.
6 7 8 |
# File 'lib/celerity/browser.rb', line 6 def object @object end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
7 8 9 |
# File 'lib/celerity/browser.rb', line 7 def @options end |
#page ⇒ Object
Returns the value of attribute page.
6 7 8 |
# File 'lib/celerity/browser.rb', line 6 def page @page end |
#viewer ⇒ Object (readonly)
Returns the value of attribute viewer.
7 8 9 |
# File 'lib/celerity/browser.rb', line 7 def viewer @viewer end |
#visible ⇒ Object
Added for Watir compatibility - not in use by Celerity
14 15 16 |
# File 'lib/celerity/watir_compatibility.rb', line 14 def visible @visible end |
#webclient ⇒ Object (readonly)
Returns the value of attribute webclient.
7 8 9 |
# File 'lib/celerity/browser.rb', line 7 def webclient @webclient end |
Class Method Details
.attach(*args) ⇒ Object
Not implemented. Use ClickableElement#click_and_attach instead.
26 27 28 |
# File 'lib/celerity/browser.rb', line 26 def self.attach(*args) raise NotImplementedError, "use ClickableElement#click_and_attach instead" end |
.each ⇒ Object
Added for Watir compatibility - not in use by Celerity
10 |
# File 'lib/celerity/watir_compatibility.rb', line 10 def each; end |
.start(uri) ⇒ Celerity::Browser Also known as: start_window
Initialize a browser and go to the given URL
16 17 18 19 20 |
# File 'lib/celerity/browser.rb', line 16 def self.start(uri) browser = new browser.goto(uri) browser end |
Instance Method Details
#add_checker(checker = nil) {|browser| ... } ⇒ Object
Add a ‘checker’ proc that will be run on every page load
566 567 568 569 570 571 572 573 574 |
# File 'lib/celerity/browser.rb', line 566 def add_checker(checker = nil, &block) if block_given? @error_checkers << block elsif Proc === checker @error_checkers << checker else raise ArgumentError, "argument must be a Proc or block" end end |
#add_cookie(domain, name, value, opts = {}) ⇒ Object
Add a cookie with the given parameters (Celerity only)
344 345 346 347 348 349 350 351 352 353 354 355 |
# File 'lib/celerity/browser.rb', line 344 def (domain, name, value, opts = {}) path = opts.delete(:path) || "/" max_age = opts.delete(:expires) || (Time.now + 60*60*24) # not sure if this is correct secure = opts.delete(:secure) || false raise(ArgumentError, "unknown option: #{opts.inspect}") unless opts.empty? = HtmlUnit::Util::Cookie.new(domain, name, value, path, max_age, secure) @webclient.getCookieManager.addCookie end |
#add_listener(type, &block) ⇒ Object
Add a listener block for one of the available types. (Celerity only) Types map to HtmlUnit interfaces like this:
:status => StatusHandler
:alert => AlertHandler ( window.alert() )
:web_window_event => WebWindowListener
:html_parser => HTMLParserListener
:incorrectness => IncorrectnessListener
:confirm => ConfirmHandler ( window.confirm() )
:prompt => PromptHandler ( window.prompt() )
Examples:
browser.add_listener(:status) { |page, message| ... }
browser.add_listener(:alert) { |page, message| ... }
browser.add_listener(:web_window_event) { |web_window_event| ... }
browser.add_listener(:html_parser) { |message, url, line, column, key| ... }
browser.add_listener(:incorrectness) { |message, origin| ... }
browser.add_listener(:confirm) { |page, message| ...; true }
browser.add_listener(:prompt) { |page, message| ... }
532 533 534 |
# File 'lib/celerity/browser.rb', line 532 def add_listener(type, &block) listener.add_listener(type, &block) end |
#assert_exists ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Check that we have a @page object.
757 758 759 |
# File 'lib/celerity/browser.rb', line 757 def assert_exists raise UnknownObjectException, "no page loaded" unless exist? end |
#asynchronized {|browser| ... } ⇒ Object
Allows you to temporarliy switch to HtmlUnit’s default AjaxController, so ajax calls are performed asynchronously. This is useful if you have created the Browser with :resynchronize => true, but want to switch it off temporarily.
473 474 475 476 477 478 |
# File 'lib/celerity/browser.rb', line 473 def asynchronized(&block) old_controller = @webclient.ajaxController @webclient.setAjaxController(::HtmlUnit::AjaxController.new) yield self @webclient.setAjaxController(old_controller) end |
#back ⇒ String
Goto back one history item
262 263 264 265 266 267 |
# File 'lib/celerity/browser.rb', line 262 def back @webclient.getCurrentWindow.getHistory.back refresh_page_from_window url end |
#bring_to_front ⇒ Object
Added for Watir compatibility - not in use by Celerity
17 |
# File 'lib/celerity/watir_compatibility.rb', line 17 def bring_to_front; true; end |
#clear_cache ⇒ Object
Clears the cache of “compiled JavaScript files and parsed CSS snippets”
311 312 313 |
# File 'lib/celerity/browser.rb', line 311 def clear_cache @webclient.cache.clear end |
#clear_cookies ⇒ Object
Clears all cookies. (Celerity only)
303 304 305 |
# File 'lib/celerity/browser.rb', line 303 def @webclient.getCookieManager.clearCookies end |
#close ⇒ Object
Unsets the current page / closes all windows
131 132 133 134 135 |
# File 'lib/celerity/browser.rb', line 131 def close @page = nil @webclient.closeAllWindows @viewer.close end |
#confirm(bool, &block) ⇒ Object
Specify a boolean value to click either ‘OK’ or ‘Cancel’ in any confirm dialogs that might show up during the duration of the given block.
(Celerity only)
550 551 552 553 554 555 556 |
# File 'lib/celerity/browser.rb', line 550 def confirm(bool, &block) blk = lambda { bool } listener.add_listener(:confirm, &blk) yield listener.remove_listener(:confirm, blk) end |
#contains_text(expected_text) ⇒ Numeric?
Check if the current page contains the given text.
244 245 246 247 |
# File 'lib/celerity/browser.rb', line 244 def contains_text(expected_text) return nil unless exist? super end |
#content_type ⇒ String
Returns content-type as in ‘text/html’.
220 221 222 223 224 |
# File 'lib/celerity/browser.rb', line 220 def content_type return '' unless @page @page.getWebResponse.getContentType end |
#cookies ⇒ Hash<domain, Hash<name, value>>
Get the cookies for this session. (Celerity only)
321 322 323 324 325 326 327 328 329 330 |
# File 'lib/celerity/browser.rb', line 321 def result = Hash.new { |hash, key| hash[key] = {} } = @webclient.getCookieManager.getCookies .each do || result[.getDomain][.getName] = .getValue end result end |
#credentials=(string) ⇒ Object
Set the credentials used for basic HTTP authentication. (Celerity only)
Example:
browser.credentials = "username:password"
120 121 122 123 124 125 |
# File 'lib/celerity/browser.rb', line 120 def credentials=(string) user, pass = string.split(":") dcp = HtmlUnit::DefaultCredentialsProvider.new dcp.addCredentials(user, pass) @webclient.setCredentialsProvider(dcp) end |
#css ⇒ Object
676 677 678 |
# File 'lib/celerity/browser.rb', line 676 def css @webclient.cssEnabled end |
#css=(bool) ⇒ Object
Turn on/off CSS loading
672 673 674 |
# File 'lib/celerity/browser.rb', line 672 def css=(bool) @webclient.cssEnabled = bool end |
#debug_web_connection(name, &blk) ⇒ Object
Start or stop HtmlUnit’s DebuggingWebConnection. (Celerity only) The output will go to /tmp/«name»
488 489 490 491 492 493 494 495 496 |
# File 'lib/celerity/browser.rb', line 488 def debug_web_connection(name, &blk) old_wc = @webclient.getWebConnection @webclient.setWebConnection HtmlUnit::Util::DebuggingWebConnection.new(old_wc, name) res = yield @webclient.setWebConnection old_wc res end |
#disable_checker(checker) ⇒ Object
Remove the given checker from the list of checkers
581 582 583 |
# File 'lib/celerity/browser.rb', line 581 def disable_checker(checker) @error_checkers.delete(checker) end |
#disable_event_listener ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Disable Celerity’s internal WebWindowEventListener
789 790 791 792 793 794 795 796 797 798 |
# File 'lib/celerity/browser.rb', line 789 def disable_event_listener listener.remove_listener(:web_window_event, @event_listener) if block_given? result = yield enable_event_listener result end end |
#document ⇒ HtmlUnit::HtmlHtml
Returns the underlying HtmlUnit document.
253 254 255 |
# File 'lib/celerity/browser.rb', line 253 def document @object end |
#enable_event_listener ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Enable Celerity’s internal WebWindowEventListener
775 776 777 778 779 780 781 |
# File 'lib/celerity/browser.rb', line 775 def enable_event_listener @event_listener ||= lambda do |event| self.page = @page ? @page.getEnclosingWindow.getEnclosedPage : event.getNewPage end listener.add_listener(:web_window_event, &@event_listener) end |
#execute_script(source) ⇒ Object
Execute the given JavaScript on the current page.
382 383 384 385 |
# File 'lib/celerity/browser.rb', line 382 def execute_script(source) assert_exists @page.executeJavaScript(source.to_s).getJavaScriptResult end |
#exist? ⇒ true, false Also known as: exists?
Checks if we have a page currently loaded.
633 634 635 |
# File 'lib/celerity/browser.rb', line 633 def exist? !!@page end |
#focused_element ⇒ Object
Returns the element that currently has the focus (Celerity only)
765 766 767 |
# File 'lib/celerity/browser.rb', line 765 def focused_element element_from_dom_node(page.getFocusedElement()) end |
#forward ⇒ String
Go forward one history item
274 275 276 277 278 279 |
# File 'lib/celerity/browser.rb', line 274 def forward @webclient.getCurrentWindow.getHistory.forward refresh_page_from_window url end |
#goto(uri) ⇒ String
Goto the given URL
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/celerity/browser.rb', line 94 def goto(uri) uri = "http://#{uri}" unless uri =~ %r{://} request = HtmlUnit::WebRequestSettings.new(::Java::JavaNet::URL.new(uri)) request.setCharset(@charset) self.headers.each_pair do |name,value| request.setAdditionalHeader(name,value) end rescue_status_code_exception do self.page = @webclient.getPage(request) end url() end |
#html ⇒ String
Returns the HTML content of the current page.
166 167 168 169 170 |
# File 'lib/celerity/browser.rb', line 166 def html return '' unless @page @page.getWebResponse.getContentAsString(@charset) end |
#ignore_pattern=(regexp) ⇒ Object
If a request is made to an URL that matches the pattern set here, Celerity will ignore the request and return an empty page with content type “text/html” instead.
This is useful to block unwanted requests (like ads/banners).
620 621 622 623 624 625 626 |
# File 'lib/celerity/browser.rb', line 620 def ignore_pattern=(regexp) unless regexp.kind_of?(Regexp) raise TypeError, "expected Regexp, got #{regexp.inspect}:#{regexp.class}" end Celerity::IgnoringWebConnection.new(@webclient, regexp) end |
#inspect ⇒ Object
83 84 85 |
# File 'lib/celerity/browser.rb', line 83 def inspect short_inspect :exclude => %w[@webclient @browser @object @options @listener @event_listener] end |
#io ⇒ IO?
Returns page contents as an IO, returns nil if no page is loaded.
230 231 232 233 234 |
# File 'lib/celerity/browser.rb', line 230 def io return nil unless @page @page.getWebResponse.getContentAsStream.to_io end |
#javascript_enabled ⇒ Object
715 716 717 |
# File 'lib/celerity/browser.rb', line 715 def javascript_enabled @webclient.isJavaScriptEnabled end |
#javascript_enabled=(bool) ⇒ Object
Turn on/off JavaScript execution
711 712 713 |
# File 'lib/celerity/browser.rb', line 711 def javascript_enabled=(bool) @webclient.setJavaScriptEnabled(bool) end |
#javascript_exceptions ⇒ Object
648 649 650 |
# File 'lib/celerity/browser.rb', line 648 def javascript_exceptions @webclient.throwExceptionOnScriptError end |
#javascript_exceptions=(bool) ⇒ Object
Turn on/off javascript exceptions
644 645 646 |
# File 'lib/celerity/browser.rb', line 644 def javascript_exceptions=(bool) @webclient.throwExceptionOnScriptError = bool end |
#log_level ⇒ Symbol
:finest, :finer, :fine, :config, :info, :warning, :severe, or :off, :all
591 592 593 |
# File 'lib/celerity/browser.rb', line 591 def log_level Celerity::Util.logger_for('com.gargoylesoftware.htmlunit').level.to_s.downcase.to_sym end |
#log_level=(level) ⇒ Object
Set Java log level (default is :warning, can be any of :all, :finest, :finer, :fine, :config, :info, :warning, :severe, :off)
601 602 603 604 605 606 607 608 609 610 611 |
# File 'lib/celerity/browser.rb', line 601 def log_level=(level) log_level = java.util.logging.Level.const_get(level.to_s.upcase) [ 'com.gargoylesoftware.htmlunit', 'com.gargoylesoftware.htmlunit.html', 'com.gargoylesoftware.htmlunit.javascript', 'org.apache.commons.httpclient' ].each { |package| Celerity::Util.logger_for(package).level = log_level } level end |
#refresh ⇒ Object
Refresh the current page
294 295 296 297 |
# File 'lib/celerity/browser.rb', line 294 def refresh assert_exists @page.refresh end |
#refresh_handler=(symbol) ⇒ Object
680 681 682 683 684 685 686 687 688 689 690 691 692 693 |
# File 'lib/celerity/browser.rb', line 680 def refresh_handler=(symbol) handler = case symbol when :waiting HtmlUnit::WaitingRefreshHandler.new when :threaded HtmlUnit::ThreadedRefreshHandler.new when :immediate HtmlUnit::ImmediateRefreshHandler.new else raise ArgumentError, "expected :waiting, :threaded or :immediate" end @webclient.setRefreshHandler handler end |
#remove_cookie(domain, name) ⇒ Object
Remove the cookie with the given domain and name (Celerity only)
366 367 368 369 370 371 372 373 374 375 |
# File 'lib/celerity/browser.rb', line 366 def (domain, name) cm = @webclient.getCookieManager = cm.getCookies.find { |c| c.getDomain == domain && c.getName == name } if .nil? raise CookieNotFoundError, "no cookie with domain #{domain.inspect} and name #{name.inspect}" end cm.removeCookie() end |
#remove_listener(type, block) ⇒ Object
536 537 538 |
# File 'lib/celerity/browser.rb', line 536 def remove_listener(type, block) listener.remove_listener(type, block) end |
#response_headers ⇒ Hash
Returns response headers as a hash.
202 203 204 205 206 |
# File 'lib/celerity/browser.rb', line 202 def response_headers return {} unless @page Hash[*@page.getWebResponse.getResponseHeaders.map { |obj| [obj.name, obj.value] }.flatten] end |
#resynchronized {|browser| ... } ⇒ Object
Allows you to temporarily switch to HtmlUnit’s NicelyResynchronizingAjaxController to resynchronize ajax calls.
@browser.resynchronized do |b|
b.link(:id, 'trigger_ajax_call').click
end
457 458 459 460 461 462 |
# File 'lib/celerity/browser.rb', line 457 def resynchronized(&block) old_controller = @webclient.ajaxController @webclient.setAjaxController(::HtmlUnit::NicelyResynchronizingAjaxController.new) yield self @webclient.setAjaxController(old_controller) end |
#secure_ssl=(bool) ⇒ Object
Turn on/off secure SSL
701 702 703 |
# File 'lib/celerity/browser.rb', line 701 def secure_ssl=(bool) @webclient.useInsecureSSL = !bool end |
#send_keys(keys) ⇒ Object
experimental - should be removed?
388 389 390 391 392 393 394 395 396 397 398 399 400 401 |
# File 'lib/celerity/browser.rb', line 388 def send_keys(keys) keys = keys.gsub(/\s*/, '').scan(/((?:\{[A-Z]+?\})|.)/u).flatten keys.each do |key| element = @page.getFocusedElement case key when "{TAB}" @page.tabToNextElement when /\w/ element.type(key) else raise NotImplementedError end end end |
#speed=(s) ⇒ Object
Added for Watir compatibility - not in use by Celerity
19 |
# File 'lib/celerity/watir_compatibility.rb', line 19 def speed=(s); s end |
#status ⇒ String
Returns the value of window.status.
158 159 160 |
# File 'lib/celerity/browser.rb', line 158 def status execute_script "window.status" # avoid the listener overhead end |
#status_code ⇒ Fixnum
Returns status code of the last request.
212 213 214 |
# File 'lib/celerity/browser.rb', line 212 def status_code @page.getWebResponse.getStatusCode end |
#status_code_exceptions ⇒ Object
662 663 664 |
# File 'lib/celerity/browser.rb', line 662 def status_code_exceptions @webclient.throwExceptionOnFailingStatusCode end |
#status_code_exceptions=(bool) ⇒ Object
Turn on/off status code exceptions
658 659 660 |
# File 'lib/celerity/browser.rb', line 658 def status_code_exceptions=(bool) @webclient.throwExceptionOnFailingStatusCode = bool end |
#text ⇒ String
Returns a text representation of the current page.
186 187 188 189 190 191 192 193 194 195 196 |
# File 'lib/celerity/browser.rb', line 186 def text return '' unless @page if @page.respond_to?(:getContent) @page.getContent.strip elsif @page.respond_to?(:getDocumentElement) && doc = @page.getDocumentElement doc.asText.strip else '' end end |
#title ⇒ String
Returns the title of the current page.
150 151 152 |
# File 'lib/celerity/browser.rb', line 150 def title @page ? @page.getTitleText : '' end |
#trace_javascript(debugger_klass = Celerity::JavascriptDebugger, &blk) ⇒ Object
498 499 500 501 502 503 |
# File 'lib/celerity/browser.rb', line 498 def trace_javascript(debugger_klass = Celerity::JavascriptDebugger, &blk) context_factory = @webclient.getJavaScriptEngine.getContextFactory context_factory.setDebugger debugger_klass.new yield context_factory.setDebugger nil end |
#url ⇒ String
Returns the URL of the current page.
141 142 143 144 |
# File 'lib/celerity/browser.rb', line 141 def url assert_exists @page.getWebResponse.getWebRequest.getUrl.toString end |
#visual_debugger ⇒ Object
Open the JavaScript debugger GUI
723 724 725 |
# File 'lib/celerity/browser.rb', line 723 def visual_debugger HtmlUnit::Util::WebClientUtils.attachVisualDebugger @webclient end |
#wait ⇒ Object
Wait for javascript jobs to finish
285 286 287 288 |
# File 'lib/celerity/browser.rb', line 285 def wait assert_exists @webclient.waitForBackgroundJavaScript(10000); end |
#wait_until(timeout = 30) {|browser| ... } ⇒ Object
Wait until the given block evaluates to true (Celerity only)
411 412 413 414 415 416 417 418 419 420 421 422 |
# File 'lib/celerity/browser.rb', line 411 def wait_until(timeout = 30, &block) returned = nil Timeout.timeout(timeout) do until returned = yield(self) refresh_page_from_window sleep 0.1 end end returned end |
#wait_while(timeout = 30) {|browser| ... } ⇒ Object
Wait while the given block evaluates to true (Celerity only)
432 433 434 435 436 437 438 439 440 441 442 443 |
# File 'lib/celerity/browser.rb', line 432 def wait_while(timeout = 30, &block) returned = nil Timeout.timeout(timeout) do while returned = yield(self) refresh_page_from_window sleep 0.1 end end returned end |
#xml ⇒ String
Returns the XML representation of the DOM.
176 177 178 179 180 |
# File 'lib/celerity/browser.rb', line 176 def xml return '' unless @page return @page.asXml if @page.respond_to?(:asXml) return text # fallback to text (for exampel for "plain/text" pages) end |