123456789_123456789_123456789_123456789_123456789_

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

Relationships & Source Files
Defined in: rb/lib/selenium/webdriver/remote/features.rb

Constant Summary

  • REMOTE_COMMANDS =
    # File 'rb/lib/selenium/webdriver/remote/features.rb', line 24
    {
      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'],
      fire_session_event: [:post, 'session/:session_id/se/event']
    }.freeze

Instance Method Summary

Instance Method Details

#add_commands(commands)

[ GitHub ]

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

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

#command_list

[ GitHub ]

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

def command_list
  @command_list ||= REMOTE_COMMANDS
end

#commands(command)

[ GitHub ]

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

def commands(command)
  command_list[command]
end

#delete_downloadable_files

[ GitHub ]

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

def delete_downloadable_files
  execute :delete_downloadable_files
end

#download_file(name)

[ GitHub ]

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

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

#downloadable_files

[ GitHub ]

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

def downloadable_files
  execute :get_downloadable_files
end

#fire_session_event(event_type, payload = nil) ⇒ Hash

Fires a custom session event to the remote server event bus. This allows test code to trigger server-side utilities that subscribe to the event bus.

Examples:

Fire a simple event

driver.fire_session_event("test:started")

Fire an event with payload

driver.fire_session_event("test:failed", {
  testName: "LoginTest",
  error: "Element not found"
})

Parameters:

  • event_type (String)

    The type of event (e.g., “test:failed”, “log:collect”)

  • payload (Hash) (defaults to: nil)

    Optional data to include with the event

Returns:

  • (Hash)

    Response data including success status, event type, and timestamp

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/remote/features.rb', line 92

def fire_session_event(event_type, payload = nil)
  params = {eventType: event_type}
  params[:payload] = payload if payload
  execute :fire_session_event, {}, params
end

#upload(local_file)

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/remote/features.rb', line 44

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)

[ GitHub ]

  
# File 'rb/lib/selenium/webdriver/remote/features.rb', line 54

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