Class: Ferrum::Browser
- Inherits:
-
Object
- Object
- Ferrum::Browser
- Extended by:
- Forwardable
- Defined in:
- lib/ferrum/browser.rb,
lib/ferrum/browser/chrome.rb,
lib/ferrum/browser/client.rb,
lib/ferrum/browser/command.rb,
lib/ferrum/browser/firefox.rb,
lib/ferrum/browser/process.rb,
lib/ferrum/browser/subscriber.rb,
lib/ferrum/browser/web_socket.rb
Defined Under Namespace
Classes: Chrome, Client, Command, Firefox, Process, Subscriber, WebSocket
Constant Summary collapse
- DEFAULT_TIMEOUT =
ENV.fetch("FERRUM_DEFAULT_TIMEOUT", 5).to_i
- WINDOW_SIZE =
[1024, 768].freeze
- BASE_URL_SCHEMA =
%w[http https].freeze
Instance Attribute Summary collapse
-
#base_url ⇒ Object
Returns the value of attribute base_url.
-
#client ⇒ Object
readonly
Returns the value of attribute client.
-
#contexts ⇒ Object
readonly
Returns the value of attribute contexts.
-
#js_errors ⇒ Object
readonly
Returns the value of attribute js_errors.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#process ⇒ Object
readonly
Returns the value of attribute process.
-
#slowmo ⇒ Object
readonly
Returns the value of attribute slowmo.
- #timeout ⇒ Object
-
#window_size ⇒ Object
readonly
Returns the value of attribute window_size.
-
#ws_max_receive_size ⇒ Object
readonly
Returns the value of attribute ws_max_receive_size.
Instance Method Summary collapse
- #command(*args) ⇒ Object
- #crash ⇒ Object
- #extensions ⇒ Object
-
#initialize(options = nil) ⇒ Browser
constructor
A new instance of Browser.
- #quit ⇒ Object
- #reset ⇒ Object
- #resize(**options) ⇒ Object
- #restart ⇒ Object
Constructor Details
#initialize(options = nil) ⇒ Browser
Returns a new instance of Browser.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/ferrum/browser.rb', line 35 def initialize( = nil) ||= {} @client = nil @window_size = .fetch(:window_size, WINDOW_SIZE) @original_window_size = @window_size @options = Hash(.merge(window_size: @window_size)) @logger, @timeout, @ws_max_receive_size = @options.values_at(:logger, :timeout, :ws_max_receive_size) @js_errors = @options.fetch(:js_errors, false) @slowmo = @options[:slowmo].to_f if @options.key?(:base_url) self.base_url = @options[:base_url] end if ENV["FERRUM_DEBUG"] && !@logger STDOUT.sync = true @logger = STDOUT @options[:logger] = @logger end @options.freeze start end |
Instance Attribute Details
#base_url ⇒ Object
Returns the value of attribute base_url.
31 32 33 |
# File 'lib/ferrum/browser.rb', line 31 def base_url @base_url end |
#client ⇒ Object (readonly)
Returns the value of attribute client.
31 32 33 |
# File 'lib/ferrum/browser.rb', line 31 def client @client end |
#contexts ⇒ Object (readonly)
Returns the value of attribute contexts.
31 32 33 |
# File 'lib/ferrum/browser.rb', line 31 def contexts @contexts end |
#js_errors ⇒ Object (readonly)
Returns the value of attribute js_errors.
31 32 33 |
# File 'lib/ferrum/browser.rb', line 31 def js_errors @js_errors end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
31 32 33 |
# File 'lib/ferrum/browser.rb', line 31 def logger @logger end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
31 32 33 |
# File 'lib/ferrum/browser.rb', line 31 def @options end |
#process ⇒ Object (readonly)
Returns the value of attribute process.
31 32 33 |
# File 'lib/ferrum/browser.rb', line 31 def process @process end |
#slowmo ⇒ Object (readonly)
Returns the value of attribute slowmo.
31 32 33 |
# File 'lib/ferrum/browser.rb', line 31 def slowmo @slowmo end |
#timeout ⇒ Object
78 79 80 |
# File 'lib/ferrum/browser.rb', line 78 def timeout @timeout || DEFAULT_TIMEOUT end |
#window_size ⇒ Object (readonly)
Returns the value of attribute window_size.
31 32 33 |
# File 'lib/ferrum/browser.rb', line 31 def window_size @window_size end |
#ws_max_receive_size ⇒ Object (readonly)
Returns the value of attribute ws_max_receive_size.
31 32 33 |
# File 'lib/ferrum/browser.rb', line 31 def ws_max_receive_size @ws_max_receive_size end |
Instance Method Details
#command(*args) ⇒ Object
82 83 84 85 86 87 |
# File 'lib/ferrum/browser.rb', line 82 def command(*args) @client.command(*args) rescue DeadBrowserError restart raise end |
#crash ⇒ Object
110 111 112 |
# File 'lib/ferrum/browser.rb', line 110 def crash command("Browser.crash") end |
#extensions ⇒ Object
72 73 74 75 76 |
# File 'lib/ferrum/browser.rb', line 72 def extensions @extensions ||= Array(@options[:extensions]).map do |ext| (ext.is_a?(Hash) && ext[:source]) || File.read(ext) end end |
#quit ⇒ Object
99 100 101 102 103 |
# File 'lib/ferrum/browser.rb', line 99 def quit @client.close @process.stop @client = @process = @contexts = nil end |
#reset ⇒ Object
89 90 91 92 |
# File 'lib/ferrum/browser.rb', line 89 def reset @window_size = @original_window_size contexts.reset end |
#resize(**options) ⇒ Object
105 106 107 108 |
# File 'lib/ferrum/browser.rb', line 105 def resize(**) @window_size = [[:width], [:height]] page.resize(**) end |
#restart ⇒ Object
94 95 96 97 |
# File 'lib/ferrum/browser.rb', line 94 def restart quit start end |