### Home Classes Methods

### In Files

- lib/selenium/client/protocol.rb

### Methods

- #boolean_array_command
- #boolean_command
- #http_post
- #http_request_for
- #number_array_command
- #number_command
- #parse_boolean_value
- #remote_control_command
- #string_array_command
- #string_command

### Class/Module Index

Quicksearch

- Selenium
- Selenium::Client
- Selenium::Client::Base
- Selenium::Client::CommandError
- Selenium::Client::Driver
- Selenium::Client::Extensions
- Selenium::Client::GeneratedDriver
- Selenium::Client::Idiomatic
- Selenium::Client::JavascriptExpressionBuilder
- Selenium::Client::JavascriptFrameworks
- Selenium::Client::JavascriptFrameworks::JQuery
- Selenium::Client::JavascriptFrameworks::Prototype
- Selenium::Client::Protocol
- Selenium::Client::ProtocolError
- Selenium::Client::SeleniumHelper
- Selenium::Rake
- Selenium::Rake::MissingJarFileError
- Selenium::Rake::ServerTask
- Selenium::Server
- Selenium::Server::Error
- Selenium::WebDriver
- Selenium::WebDriver::ActionBuilder
- Selenium::WebDriver::Alert
- Selenium::WebDriver::Android
- Selenium::WebDriver::Android::Bridge
- Selenium::WebDriver::BridgeHelper
- Selenium::WebDriver::Chrome
- Selenium::WebDriver::Chrome::Bridge
- Selenium::WebDriver::Chrome::Profile
- Selenium::WebDriver::Chrome::Service
- Selenium::WebDriver::Driver
- Selenium::WebDriver::DriverExtensions
- Selenium::WebDriver::DriverExtensions::HasBrowserConnection
- Selenium::WebDriver::DriverExtensions::HasInputDevices
- Selenium::WebDriver::DriverExtensions::HasLocation
- Selenium::WebDriver::DriverExtensions::HasSessionId
- Selenium::WebDriver::DriverExtensions::HasTouchScreen
- Selenium::WebDriver::DriverExtensions::HasWebStorage
- Selenium::WebDriver::DriverExtensions::Rotatable
- Selenium::WebDriver::DriverExtensions::TakesScreenshot
- Selenium::WebDriver::DriverExtensions::UploadsFiles
- Selenium::WebDriver::Element
- Selenium::WebDriver::Error
- Selenium::WebDriver::Error::ElementNotDisplayedError
- Selenium::WebDriver::Error::ElementNotSelectableError
- Selenium::WebDriver::Error::ElementNotVisibleError
- Selenium::WebDriver::Error::ExpectedError
- Selenium::WebDriver::Error::IMEEngineActivationFailedError
- Selenium::WebDriver::Error::IMENotAvailableError
- Selenium::WebDriver::Error::IndexOutOfBoundsError
- Selenium::WebDriver::Error::InvalidCookieDomainError
- Selenium::WebDriver::Error::InvalidElementCoordinatesError
- Selenium::WebDriver::Error::InvalidElementStateError
- Selenium::WebDriver::Error::InvalidSelectorError
- Selenium::WebDriver::Error::JavascriptError
- Selenium::WebDriver::Error::MoveTargetOutOfBoundsError
- Selenium::WebDriver::Error::NoAlertOpenError
- Selenium::WebDriver::Error::NoAlertPresentError
- Selenium::WebDriver::Error::NoCollectionError
- Selenium::WebDriver::Error::NoScriptResultError
- Selenium::WebDriver::Error::NoStringError
- Selenium::WebDriver::Error::NoStringLengthError
- Selenium::WebDriver::Error::NoStringWrapperError
- Selenium::WebDriver::Error::NoSuchCollectionError
- Selenium::WebDriver::Error::NoSuchDocumentError
- Selenium::WebDriver::Error::NoSuchDriverError
- Selenium::WebDriver::Error::NoSuchElementError
- Selenium::WebDriver::Error::NoSuchFrameError
- Selenium::WebDriver::Error::NoSuchWindowError
- Selenium::WebDriver::Error::NullPointerError
- Selenium::WebDriver::Error::ObsoleteElementError
- Selenium::WebDriver::Error::ScriptTimeOutError
- Selenium::WebDriver::Error::ServerError
- Selenium::WebDriver::Error::StaleElementReferenceError
- Selenium::WebDriver::Error::TimeOutError
- Selenium::WebDriver::Error::UnableToSetCookieError
- Selenium::WebDriver::Error::UnexpectedJavascriptError
- Selenium::WebDriver::Error::UnhandledAlertError
- Selenium::WebDriver::Error::UnhandledError
- Selenium::WebDriver::Error::UnknownCommandError
- Selenium::WebDriver::Error::UnknownError
- Selenium::WebDriver::Error::UnsupportedOperationError
- Selenium::WebDriver::Error::WebDriverError
- Selenium::WebDriver::Error::XPathLookupError
- Selenium::WebDriver::FileReaper
- Selenium::WebDriver::Firefox
- Selenium::WebDriver::Firefox::Binary
- Selenium::WebDriver::Firefox::Bridge
- Selenium::WebDriver::Firefox::Extension
- Selenium::WebDriver::Firefox::Launcher
- Selenium::WebDriver::Firefox::Profile
- Selenium::WebDriver::Firefox::ProfilesIni
- Selenium::WebDriver::Firefox::SocketLock
- Selenium::WebDriver::Firefox::Util
- Selenium::WebDriver::HTML5
- Selenium::WebDriver::HTML5::LocalStorage
- Selenium::WebDriver::HTML5::SessionStorage
- Selenium::WebDriver::HTML5::SharedWebStorage
- Selenium::WebDriver::IE
- Selenium::WebDriver::IE::Bridge
- Selenium::WebDriver::IE::Server
- Selenium::WebDriver::IPhone
- Selenium::WebDriver::IPhone::Bridge
- Selenium::WebDriver::JsonHelper
- Selenium::WebDriver::Keyboard
- Selenium::WebDriver::Keys
- Selenium::WebDriver::LogEntry
- Selenium::WebDriver::Mouse
- Selenium::WebDriver::Navigation
- Selenium::WebDriver::Opera
- Selenium::WebDriver::Opera::Bridge
- Selenium::WebDriver::Opera::Service
- Selenium::WebDriver::Options
- Selenium::WebDriver::PhantomJS
- Selenium::WebDriver::PhantomJS::Bridge
- Selenium::WebDriver::PhantomJS::Service
- Selenium::WebDriver::Platform
- Selenium::WebDriver::PortProber
- Selenium::WebDriver::ProfileHelper
- Selenium::WebDriver::ProfileHelper::ClassMethods
- Selenium::WebDriver::Proxy
- Selenium::WebDriver::Remote
- Selenium::WebDriver::Remote::Bridge
- Selenium::WebDriver::Remote::Capabilities
- Selenium::WebDriver::Remote::Http
- Selenium::WebDriver::Remote::Http::Common
- Selenium::WebDriver::Remote::Http::Curb
- Selenium::WebDriver::Remote::Http::Default
- Selenium::WebDriver::Remote::Http::Persistent
- Selenium::WebDriver::Remote::Response
- Selenium::WebDriver::Safari
- Selenium::WebDriver::Safari::Bridge
- Selenium::WebDriver::Safari::Browser
- Selenium::WebDriver::Safari::Extension
- Selenium::WebDriver::Safari::Server
- Selenium::WebDriver::SearchContext
- Selenium::WebDriver::SocketPoller
- Selenium::WebDriver::Support
- Selenium::WebDriver::Support::AbstractEventListener
- Selenium::WebDriver::Support::BlockEventListener
- Selenium::WebDriver::Support::Color
- Selenium::WebDriver::Support::EventFiringBridge
- Selenium::WebDriver::Support::Select
- Selenium::WebDriver::Support::Select::Escaper
- Selenium::WebDriver::TargetLocator
- Selenium::WebDriver::Timeouts
- Selenium::WebDriver::TouchActionBuilder
- Selenium::WebDriver::TouchScreen
- Selenium::WebDriver::Wait
- Selenium::WebDriver::Window
- Selenium::WebDriver::Zipper
- Base64
- Dir
- SocketError
- String

No matching classes.

# Selenium::Client::Protocol

Module in charge of handling Selenium over-the-wire HTTP protocol

### Attributes

session_id[R]

### Public Instance Methods

boolean_array_command(verb, args) click to toggle source

    # File lib/selenium/client/protocol.rb, line 59
    def boolean_array_command(verb, args)
      string_array_command(verb, args).collect {|value| parse_boolean_value(value)}
    end

boolean_command(verb, args=[]) click to toggle source

    # File lib/selenium/client/protocol.rb, line 55
    def boolean_command(verb, args=[])
      parse_boolean_value string_command(verb, args)
    end

number_array_command(verb, args) click to toggle source

    # File lib/selenium/client/protocol.rb, line 51
    def number_array_command(verb, args)
      string_array_command verb, args
    end

number_command(verb, args) click to toggle source

    # File lib/selenium/client/protocol.rb, line 47
    def number_command(verb, args)
      string_command verb, args
    end

remote_control_command(verb, args=[]) click to toggle source

    # File lib/selenium/client/protocol.rb, line 10
    def remote_control_command(verb, args=[])
      timeout(@default_timeout_in_seconds) do
        status, response = http_post(http_request_for(verb, args))
        raise CommandError, response unless status == "OK"
        response[3..-1] # strip "OK," from response
      end
    end

string_array_command(verb, args=[]) click to toggle source

    # File lib/selenium/client/protocol.rb, line 22
    def string_array_command(verb, args=[])
      csv = string_command(verb, args)
      token = ""
      tokens = []
      escape = false
      csv.split(//).each do |letter|
        if escape
          token += letter
          escape = false
          next
        end
        case letter
          when '\'
            escape = true
          when ','
            tokens << token
            token = ""
          else
            token += letter
        end
      end
      tokens << token
      return tokens
    end

string_command(verb, args=[]) click to toggle source

    # File lib/selenium/client/protocol.rb, line 18
    def string_command(verb, args=[])
      remote_control_command(verb, args)
    end

### Protected Instance Methods

http_post(data) click to toggle source

    # File lib/selenium/client/protocol.rb, line 83
    def http_post(data)
      start = Time.now
      called_from = caller.detect{|line| line !~ /(selenium-client|vendor|usr\/lib\/ruby|\(eval\))/}
      http = Net::HTTP.new(@host, @port)
      http.open_timeout = default_timeout_in_seconds
      http.read_timeout = default_timeout_in_seconds
      response = http.post('/selenium-server/driver/', data, HTTP_HEADERS)
      if response.body !~ /^OK/
        puts "#{start} selenium-client received failure from selenium server:"
        puts "requested:"
        puts "\t" + CGI::unescape(data.split('&').join("\n\t"))
        puts "received:"
        puts "\t#{response.body.inspect}"
        puts "\tcalled from #{called_from}"
      end
      [ response.body[0..1], response.body ]
    end

http_request_for(verb, args) click to toggle source

    # File lib/selenium/client/protocol.rb, line 74
    def http_request_for(verb, args)
      data = "cmd=#{CGI::escape(verb)}"
      args.each_with_index do |arg, index|
        data << "&#{index.succ}=#{CGI::escape(arg.to_s)}"
      end
      data << "&sessionId=#{session_id}" unless session_id.nil?
      data
    end

parse_boolean_value(value) click to toggle source

    # File lib/selenium/client/protocol.rb, line 65
    def parse_boolean_value(value)
      if ("true" == value)
          return true
      elsif ("false" == value)
          return false
      end
      raise ProtocolError, "Invalid Selenese boolean value that is neither 'true' nor 'false': got '#{value}'"
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.