Class: WebDriverManager::GeckoDriver

Inherits:
Object
  • Object
show all
Extended by:
Support
Defined in:
lib/webdriver_manager/drivers/driver_gecko.rb

Class Method Summary collapse

Methods included from Support

latest_binary, provision, provision_driver, remove_binary

Class Method Details

.current_binaryObject



8
9
10
11
12
13
14
15
16
# File 'lib/webdriver_manager/drivers/driver_gecko.rb', line 8

def current_binary
  WebDriverManager.logger.debug("Checking Current Driver Version")
  return nil unless driver_is_downloaded?
  binary_version = `#{driver_binary} --version`
  WebDriverManager.logger.debug(
    "Current version of #{driver_binary} is #{binary_version}"
  )
  normalize(binary_version.match(/geckodriver (\d+\.\d+\.\d+)/)[1])
end

.driver_base_urlObject



22
23
24
# File 'lib/webdriver_manager/drivers/driver_gecko.rb', line 22

def driver_base_url
  "https://github.com/mozilla/geckodriver/releases"
end

.driver_binary_listObject



26
27
28
29
30
31
32
33
34
35
# File 'lib/webdriver_manager/drivers/driver_gecko.rb', line 26

def driver_binary_list
  unless driver_url_is_reachable?
    raise StandardError, "Unable to Access the Driver URL"
  end

  @binaries ||= begin
    files = process_binary_files
    process_binary_versions(files)
  end
end

.driver_nameObject



18
19
20
# File 'lib/webdriver_manager/drivers/driver_gecko.rb', line 18

def driver_name
  os_platform == "win" ? "geckodriver.exe" : "geckodriver"
end

.normalize(string) ⇒ Object



58
59
60
61
62
# File 'lib/webdriver_manager/drivers/driver_gecko.rb', line 58

def normalize(string)
  string.match(/(\d+)\.(\d+\.\d+)/)
        .to_a
        .map { |v| v.tr('.', '') }[1..-1].join('.').to_f
end

.process_binary_filesObject



37
38
39
40
41
42
43
# File 'lib/webdriver_manager/drivers/driver_gecko.rb', line 37

def process_binary_files
  resource = Nokogiri::XML.parse(get(driver_base_url))
  files = resource.css(".release-downloads a")
                  .collect { |file| file["href"] }
  files.reject! { |file| file.include?('archive') }
  files.select! { |file| file.include?(os_platform) }
end

.process_binary_versions(files) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/webdriver_manager/drivers/driver_gecko.rb', line 45

def process_binary_versions(files)
  binary_list = files.each_with_object({}) do |file, binary|
    version = normalize(file[/v(\d+\.\d+\.\d+)/, 1])
    binary[version] = "https://github.com#{file}"
  end

  WebDriverManager.logger.debug(
    "Versions Located at Driver URL: #{binary_list.keys}"
  )

  binary_list
end