Class: Ferrum::Browser
- Inherits:
-
Object
- Object
- Ferrum::Browser
- Extended by:
- Forwardable
- Defined in:
- lib/ferrum/browser.rb,
lib/ferrum/browser/client.rb,
lib/ferrum/browser/process.rb,
lib/ferrum/browser/subscriber.rb,
lib/ferrum/browser/web_socket.rb
Defined Under Namespace
Classes: Client, 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.
33 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 |
# File 'lib/ferrum/browser.rb', line 33 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.
29 30 31 |
# File 'lib/ferrum/browser.rb', line 29 def base_url @base_url end |
#client ⇒ Object (readonly)
Returns the value of attribute client.
29 30 31 |
# File 'lib/ferrum/browser.rb', line 29 def client @client end |
#contexts ⇒ Object (readonly)
Returns the value of attribute contexts.
29 30 31 |
# File 'lib/ferrum/browser.rb', line 29 def contexts @contexts end |
#js_errors ⇒ Object (readonly)
Returns the value of attribute js_errors.
29 30 31 |
# File 'lib/ferrum/browser.rb', line 29 def js_errors @js_errors end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
29 30 31 |
# File 'lib/ferrum/browser.rb', line 29 def logger @logger end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
29 30 31 |
# File 'lib/ferrum/browser.rb', line 29 def @options end |
#process ⇒ Object (readonly)
Returns the value of attribute process.
29 30 31 |
# File 'lib/ferrum/browser.rb', line 29 def process @process end |
#slowmo ⇒ Object (readonly)
Returns the value of attribute slowmo.
29 30 31 |
# File 'lib/ferrum/browser.rb', line 29 def slowmo @slowmo end |
#timeout ⇒ Object
73 74 75 |
# File 'lib/ferrum/browser.rb', line 73 def timeout @timeout || DEFAULT_TIMEOUT end |
#window_size ⇒ Object (readonly)
Returns the value of attribute window_size.
29 30 31 |
# File 'lib/ferrum/browser.rb', line 29 def window_size @window_size end |
Instance Method Details
#command(*args) ⇒ Object
77 78 79 80 81 82 |
# File 'lib/ferrum/browser.rb', line 77 def command(*args) @client.command(*args) rescue DeadBrowserError restart raise end |
#crash ⇒ Object
105 106 107 |
# File 'lib/ferrum/browser.rb', line 105 def crash command("Browser.crash") end |
#extensions ⇒ Object
69 70 71 |
# File 'lib/ferrum/browser.rb', line 69 def extensions @extensions ||= Array(@options[:extensions]).map { |p| File.read(p) } end |
#quit ⇒ Object
94 95 96 97 98 |
# File 'lib/ferrum/browser.rb', line 94 def quit @client.close @process.stop @client = @process = @contexts = nil end |
#reset ⇒ Object
84 85 86 87 |
# File 'lib/ferrum/browser.rb', line 84 def reset @window_size = @original_window_size contexts.reset end |
#resize(**options) ⇒ Object
100 101 102 103 |
# File 'lib/ferrum/browser.rb', line 100 def resize(**) @window_size = [[:width], [:height]] page.resize(**) end |
#restart ⇒ Object
89 90 91 92 |
# File 'lib/ferrum/browser.rb', line 89 def restart quit start end |