Module: Selenium::WebDriver::Remote::Features

Defined in:
rb/lib/selenium/webdriver/remote/features.rb

Constant Summary collapse

REMOTE_COMMANDS =
{
  upload_file: [:post, 'session/:session_id/se/file'],
  get_downloadable_files: [:get, 'session/:session_id/se/files'],
  download_file: [:post, 'session/:session_id/se/files'],
  delete_downloadable_files: [:delete, 'session/:session_id/se/files']
}.freeze

Instance Method Summary collapse

Instance Method Details

#add_commands(commands) ⇒ Object



31
32
33
# File 'rb/lib/selenium/webdriver/remote/features.rb', line 31

def add_commands(commands)
  @command_list = command_list.merge(commands)
end

#command_listObject



35
36
37
# File 'rb/lib/selenium/webdriver/remote/features.rb', line 35

def command_list
  @command_list ||= REMOTE_COMMANDS
end

#commands(command) ⇒ Object



39
40
41
# File 'rb/lib/selenium/webdriver/remote/features.rb', line 39

def commands(command)
  command_list[command]
end

#delete_downloadable_filesObject



69
70
71
# File 'rb/lib/selenium/webdriver/remote/features.rb', line 69

def delete_downloadable_files
  execute :delete_downloadable_files
end

#download_file(name) ⇒ Object



65
66
67
# File 'rb/lib/selenium/webdriver/remote/features.rb', line 65

def download_file(name)
  execute :download_file, {}, {name: name}
end

#downloadable_filesObject



61
62
63
# File 'rb/lib/selenium/webdriver/remote/features.rb', line 61

def downloadable_files
  execute :get_downloadable_files
end

#upload(local_file) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'rb/lib/selenium/webdriver/remote/features.rb', line 43

def upload(local_file)
  unless File.file?(local_file)
    WebDriver.logger.error("File detector only works with files. #{local_file.inspect} isn`t a file!",
                           id: :file_detector)
    raise Error::WebDriverError, "You are trying to upload something that isn't a file."
  end

  execute :upload_file, {}, {file: Zipper.zip_file(local_file)}
end

#upload_if_necessary(keys) ⇒ Object



53
54
55
56
57
58
59
# File 'rb/lib/selenium/webdriver/remote/features.rb', line 53

def upload_if_necessary(keys)
  local_files = keys.first&.split("\n")&.filter_map { |key| @file_detector.call(Array(key)) }
  return keys unless local_files&.any?

  keys = local_files.map { |local_file| upload(local_file) }
  Array(keys.join("\n"))
end