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.
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.
34 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 |
# File 'lib/ferrum/browser.rb', line 34 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 = @options.values_at(:logger, :timeout) @js_errors = @options.fetch(:js_errors, false) @slowmo = @options[:slowmo].to_i 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.
30 31 32 |
# File 'lib/ferrum/browser.rb', line 30 def base_url @base_url end |
#client ⇒ Object (readonly)
Returns the value of attribute client.
30 31 32 |
# File 'lib/ferrum/browser.rb', line 30 def client @client end |
#contexts ⇒ Object (readonly)
Returns the value of attribute contexts.
30 31 32 |
# File 'lib/ferrum/browser.rb', line 30 def contexts @contexts end |
#js_errors ⇒ Object (readonly)
Returns the value of attribute js_errors.
30 31 32 |
# File 'lib/ferrum/browser.rb', line 30 def js_errors @js_errors end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
30 31 32 |
# File 'lib/ferrum/browser.rb', line 30 def logger @logger end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
30 31 32 |
# File 'lib/ferrum/browser.rb', line 30 def @options end |
#process ⇒ Object (readonly)
Returns the value of attribute process.
30 31 32 |
# File 'lib/ferrum/browser.rb', line 30 def process @process end |
#slowmo ⇒ Object (readonly)
Returns the value of attribute slowmo.
30 31 32 |
# File 'lib/ferrum/browser.rb', line 30 def slowmo @slowmo end |
#timeout ⇒ Object
76 77 78 |
# File 'lib/ferrum/browser.rb', line 76 def timeout @timeout || DEFAULT_TIMEOUT end |
#window_size ⇒ Object (readonly)
Returns the value of attribute window_size.
30 31 32 |
# File 'lib/ferrum/browser.rb', line 30 def window_size @window_size end |
Instance Method Details
#command(*args) ⇒ Object
80 81 82 83 84 85 |
# File 'lib/ferrum/browser.rb', line 80 def command(*args) @client.command(*args) rescue DeadBrowserError restart raise end |
#crash ⇒ Object
108 109 110 |
# File 'lib/ferrum/browser.rb', line 108 def crash command("Browser.crash") end |
#extensions ⇒ Object
70 71 72 73 74 |
# File 'lib/ferrum/browser.rb', line 70 def extensions @extensions ||= Array(@options[:extensions]).map do |ext| (ext.is_a?(Hash) && ext[:source]) || File.read(ext) end end |
#quit ⇒ Object
97 98 99 100 101 |
# File 'lib/ferrum/browser.rb', line 97 def quit @client.close @process.stop @client = @process = @contexts = nil end |
#reset ⇒ Object
87 88 89 90 |
# File 'lib/ferrum/browser.rb', line 87 def reset @window_size = @original_window_size contexts.reset end |
#resize(**options) ⇒ Object
103 104 105 106 |
# File 'lib/ferrum/browser.rb', line 103 def resize(**) @window_size = [[:width], [:height]] page.resize(**) end |
#restart ⇒ Object
92 93 94 95 |
# File 'lib/ferrum/browser.rb', line 92 def restart quit start end |