class Ferrum::Browser::Command

Constants

NOT_FOUND

Attributes

defaults[R]
options[R]
path[R]

Public Class Methods

build(options, user_data_dir) click to toggle source

Currently only these browsers support CDP: github.com/cyrus-and/chrome-remote-interface#implementations

# File lib/ferrum/browser/command.rb, line 12
def self.build(options, user_data_dir)
  defaults = case options[:browser_name]
             when :firefox
               Options::Firefox.options
             when :chrome, :opera, :edge, nil
               Options::Chrome.options
             else
               raise NotImplementedError, "not supported browser"
             end

  new(defaults, options, user_data_dir)
end
new(defaults, options, user_data_dir) click to toggle source
# File lib/ferrum/browser/command.rb, line 27
def initialize(defaults, options, user_data_dir)
  @flags = {}
  @defaults = defaults
  @options, @user_data_dir = options, user_data_dir
  @path = options[:browser_path] || ENV["BROWSER_PATH"] || defaults.detect_path
  raise Cliver::Dependency::NotFound.new(NOT_FOUND) unless @path
  merge_options
end

Public Instance Methods

to_a() click to toggle source
# File lib/ferrum/browser/command.rb, line 40
def to_a
  [path] + @flags.map { |k, v| v.nil? ? "--#{k}" : "--#{k}=#{v}" }
end
xvfb?() click to toggle source
# File lib/ferrum/browser/command.rb, line 36
def xvfb?
  !!options[:xvfb]
end

Private Instance Methods

merge_options() click to toggle source
# File lib/ferrum/browser/command.rb, line 46
def merge_options
  @flags = defaults.merge_required(@flags, options, @user_data_dir)

  unless options[:ignore_default_browser_options]
    @flags = defaults.merge_default(@flags, options)
  end

  @flags.merge!(options.fetch(:browser_options, {}))
end