### Home Classes Methods

### In Files

- lib/selenium/client/javascript_expression_builder.rb

### Parent

Object

### Methods

- ::new
- #append
- #element_value_is
- #element_value_is_not
- #find_element
- #find_text
- #find_text_in_document
- #find_text_in_element
- #javascript_framework_for
- #no_pending_ajax_requests
- #no_pending_effects
- #not_visible
- #quote_escaped
- #text_match
- #visible
- #window_script

### 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::JavascriptExpressionBuilder

### Attributes

script[R]

### Public Class Methods

new(javascript_framework_name=nil) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 7
    def initialize(javascript_framework_name=nil)
      @framework = javascript_framework_for(javascript_framework_name) if javascript_framework_name
      @script = ""
    end

### Public Instance Methods

append(text) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 12
    def append(text)
      @script << text
      self
    end

element_value_is(expected_value) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 45
    def element_value_is(expected_value)
      append "(element != null && element.value == '#{quote_escaped(expected_value)}')"
    end

element_value_is_not(expected_value) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 49
    def element_value_is_not(expected_value)
      append "(element == null || element.value != '#{quote_escaped(expected_value)}')"
    end

find_element(locator) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 33
    def find_element(locator)
      append            var element;          try {            element = selenium.browserbot.findElement('#{quote_escaped(locator)}');          } catch(e) {            element = null;          }
    end

find_text(pattern, options) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 53
    def find_text(pattern, options)
      if options[:element].nil?
        find_text_in_document pattern, options
      else
        find_text_in_element pattern, options
      end

      self
    end

find_text_in_document(pattern, options) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 63
    def find_text_in_document(pattern, options)
      js_regexp = case pattern
      when Regexp
        pattern.inspect
      else
        /#{pattern}/.inspect
      end
      append           var text_match;          text_match = (null != selenium.browserbot.getCurrentWindow().document.body.innerHTML.match(#{js_regexp}));

    end

find_text_in_element(pattern, options) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 77
    def find_text_in_element(pattern, options)
      find_element(options[:element])
      append           var text_match;          text_match = (element != null && #{text_match(pattern)});

      self
    end

javascript_framework_for(framework_name) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 96
    def javascript_framework_for(framework_name)
      case framework_name.to_sym
      when :prototype
        JavascriptFrameworks::Prototype
      when :jquery
        JavascriptFrameworks::JQuery
      else
        raise "Unsupported Javascript Framework: #{framework_name}"
      end
    end

no_pending_ajax_requests() click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 17
    def no_pending_ajax_requests
      append window_script("#{@framework.ajax_request_tracker} == 0")
    end

no_pending_effects() click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 21
    def no_pending_effects
      append window_script("Effect.Queue.size() == 0")
    end

not_visible(locator) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 29
    def not_visible(locator)
      append "!selenium.isVisible('#{quote_escaped(locator)}')"
    end

quote_escaped(a_string) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 111
    def quote_escaped(a_string)
      a_string.gsub(/\\/, "\\\\\\").gsub(/'/, %<\\>)
    end

text_match(pattern) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 87
    def text_match(pattern)
      case pattern
      when Regexp
        "null != element.innerHTML.match(#{pattern.inspect})"
      else
        "element.innerHTML == '#{quote_escaped(pattern)}'"
      end
    end

visible(locator) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 25
    def visible(locator)
      append "selenium.isVisible('#{quote_escaped(locator)}')"
    end

window_script(expression) click to toggle source

    # File lib/selenium/client/javascript_expression_builder.rb, line 107
    def window_script(expression)
      "selenium.browserbot.getCurrentWindow().#{expression};"
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.