### Home Classes Methods

### In Files

- lib/selenium/webdriver/firefox/launcher.rb

### Parent

Object

### Methods

- ::new
- #assert_profile
- #connect_until_stable
- #create_profile
- #fetch_profile
- #find_free_port
- #launch
- #quit
- #socket_lock
- #start
- #start_silent_and_wait
- #url

### 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::WebDriver::Firefox::Launcher

@api private

### Constants

SOCKET_LOCK_TIMEOUT
STABLE_CONNECTION_TIMEOUT

### Public Class Methods

new(binary, port, profile = nil) click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 11
    def initialize(binary, port, profile = nil)
      @binary = binary
      @port   = Integer(port)

      raise Error::WebDriverError, "invalid port: #{@port}" if @port < 1

      if profile.kind_of? Profile
        @profile = profile
      else
        @profile_name = profile
        @profile = nil
      end

      @host = "127.0.0.1"
    end

### Public Instance Methods

assert_profile() click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 95
    def assert_profile
      raise Error::WebDriverError, "must create_profile first" unless @profile && @profile_dir
    end

connect_until_stable() click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 74
    def connect_until_stable
      poller = SocketPoller.new(@host, @port, STABLE_CONNECTION_TIMEOUT)

      unless poller.connected?
        @binary.quit
        raise Error::WebDriverError, "unable to obtain stable firefox connection in #{STABLE_CONNECTION_TIMEOUT} seconds (#{@host}:#{@port})"
      end
    end

create_profile() click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 52
    def create_profile
      fetch_profile unless @profile

      @profile.add_webdriver_extension
      @profile.port = @port

      @profile_dir = @profile.layout_on_disk
      FileReaper << @profile_dir
    end

fetch_profile() click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 83
    def fetch_profile
      if @profile_name
        @profile = Profile.from_name @profile_name

        unless @profile
          raise Error::WebDriverError, "unable to find profile named: #{@profile_name.inspect}"
        end
      else
        @profile = Profile.new
      end
    end

find_free_port() click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 48
    def find_free_port
      @port = PortProber.above @port
    end

launch() click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 31
    def launch
      socket_lock.locked do
        find_free_port
        create_profile
        start_silent_and_wait
        start
        connect_until_stable
      end

      self
    end

quit() click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 43
    def quit
      @binary.quit
      FileReaper.reap(@profile_dir) if @profile_dir
    end

socket_lock() click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 99
    def socket_lock
      @socket_lock ||= SocketLock.new(@port - 1, SOCKET_LOCK_TIMEOUT)
    end

start() click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 62
    def start
      assert_profile
      @binary.start_with @profile, @profile_dir, "-foreground"
    end

start_silent_and_wait() click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 67
    def start_silent_and_wait
      assert_profile

      @binary.start_with @profile, @profile_dir, "-silent"
      @binary.wait
    end

url() click to toggle source

    # File lib/selenium/webdriver/firefox/launcher.rb, line 27
    def url
      "http://#{@host}:#{@port}/hub"
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.