Sha256: 6d48df968f4df3bd2d93d9d65146404c2bf1b67c9bebb20c6b925ac7355de124

Contents?: true

Size: 1.5 KB

Versions: 4

Compression:

Stored size: 1.5 KB

Contents

# frozen_string_literal: true

require 'selenium-webdriver'
require 'aranha/selenium/driver_factory/base'

module Aranha
  module Selenium
    class DriverFactory
      class Firefox < ::Aranha::Selenium::DriverFactory::Base
        def build
          ::Selenium::WebDriver.for(
            :firefox,
            options: ::Selenium::WebDriver::Firefox::Options.new(
              profile: build_profile,
              args: build_args
            ),
            desired_capabilities: build_capabilities
          )
        end

        private

        def build_args
          r = []
          r << '-headless' if headless?
          r
        end

        def build_capabilities
          if accept_insecure_certs?
            ::Selenium::WebDriver::Remote::Capabilities.firefox(accept_insecure_certs: true)
          else
            ::Selenium::WebDriver::Remote::Capabilities.firefox
          end
        end

        def build_profile
          r = ::Selenium::WebDriver::Firefox::Profile.new
          r['browser.download.dir'] = downloads_dir
          r['browser.download.folderList'] = 2
          r['browser.helperApps.neverAsk.saveToDisk'] = auto_download_mime_types.join(';')
          r['pdfjs.disabled'] = true
          r['general.useragent.override'] = user_agent if user_agent.present?
          r
        end

        def auto_download_mime_types
          ::File.read(
            ::File.join(__dir__, 'firefox_auto_download_mime_types')
          ).each_line.map(&:strip)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
aranha-selenium-0.1.2 lib/aranha/selenium/driver_factory/firefox.rb
aranha-selenium-0.1.1 lib/aranha/selenium/driver_factory/firefox.rb
aranha-selenium-0.1.0 lib/aranha/selenium/driver_factory/firefox.rb
aranha-0.11.0 lib/aranha/selenium/driver_factory/firefox.rb