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.
-
#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
- #clear_memory_cache ⇒ Object
- #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
- #targets ⇒ 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 |
#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
74 75 76 |
# File 'lib/ferrum/browser.rb', line 74 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
#clear_memory_cache ⇒ Object
85 86 87 |
# File 'lib/ferrum/browser.rb', line 85 def clear_memory_cache page.command("Network.clearBrowserCache") end |
#command(*args) ⇒ Object
78 79 80 81 82 83 |
# File 'lib/ferrum/browser.rb', line 78 def command(*args) @client.command(*args) rescue DeadBrowserError restart raise end |
#crash ⇒ Object
114 115 116 |
# File 'lib/ferrum/browser.rb', line 114 def crash command("Browser.crash") end |
#extensions ⇒ Object
70 71 72 |
# File 'lib/ferrum/browser.rb', line 70 def extensions @extensions ||= Array(@options[:extensions]).map { |p| File.read(p) } end |
#quit ⇒ Object
99 100 101 102 103 |
# File 'lib/ferrum/browser.rb', line 99 def quit @client.close @process.stop @client = @process = @targets = nil end |
#reset ⇒ Object
89 90 91 92 |
# File 'lib/ferrum/browser.rb', line 89 def reset @window_size = @original_window_size targets.reset end |
#resize(**options) ⇒ Object
109 110 111 112 |
# File 'lib/ferrum/browser.rb', line 109 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 |