class Ferrum::Browser::Command
def self.build(options, user_data_dir)
Currently only these browsers support CDP:
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
def headless_new?
def headless_new? @flags["headless"] == "new" end
def initialize(defaults, options, user_data_dir)
def initialize(defaults, options, user_data_dir) @flags = {} @defaults = defaults @options = options @user_data_dir = user_data_dir @path = options.browser_path || ENV.fetch("BROWSER_PATH", nil) || defaults.detect_path raise BinaryNotFoundError, NOT_FOUND unless @path merge_options end
def merge_options
def merge_options @flags = defaults.merge_required(@flags, options, @user_data_dir) @flags = defaults.merge_default(@flags, options) unless options.ignore_default_browser_options @flags.merge!(options.browser_options) end
def to_a
def to_a [path] + @flags.map { |k, v| v.nil? ? "--#{k}" : "--#{k}=#{v}" } end
def to_s
def to_s to_a.join(" \\ \n ") end
def xvfb?
def xvfb? !!options.xvfb end