Sha256: 108087b47f82b3bb1c3bcc379c59085dd7076079379e7cf9a9d6baaf8dcbe18a

Contents?: true

Size: 1.77 KB

Versions: 7

Compression:

Stored size: 1.77 KB

Contents

module Akephalos
  class Node
    def initialize(node)
      @nodes = []
      @_node = node
    end

    def checked?
      @_node.isChecked
    end

    def text
      @_node.asText
    end

    def [](name)
      @_node.hasAttribute(name.to_s) ? @_node.getAttribute(name.to_s) : nil
    end

    def value
      case tag_name
      when "select"
        if self[:multiple]
          @_node.selected_options.map { |option| option.text }
        else
          selected_option = @_node.selected_options.first
          selected_option ? selected_option.text : nil
        end
      when "textarea"
        @_node.getText
      else
        self[:value]
      end
    end

    def value=(value)
      case tag_name
      when "textarea"
        @_node.setText(value)
      when "input"
        @_node.setValueAttribute(value)
      end
    end

    def select_option(option)
      opt = @_node.getOptions.detect { |o| o.asText == option }

      opt && opt.setSelected(true)
    end

    def unselect_option(option)
      opt = @_node.getOptions.detect { |o| o.asText == option }

      opt && opt.setSelected(false)
    end

    def options
      @_node.getOptions.map { |node| Node.new(node) }
    end

    def selected_options
      @_node.getSelectedOptions.map { |node| Node.new(node) }
    end

    def fire_event(name)
      @_node.fireEvent(name)
    end

    def tag_name
      @_node.getNodeName
    end

    def visible?
      @_node.isDisplayed
    end

    def click
      @_node.click
      @_node.getPage.getEnclosingWindow.getJobManager.waitForJobs(1000)
      @_node.getPage.getEnclosingWindow.getJobManager.waitForJobsStartingBefore(1000)
    end

    def find(selector)
      nodes = @_node.getByXPath(selector).map { |node| Node.new(node) }
      @nodes << nodes
      nodes
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
akephalos-0.2.3-java lib/akephalos/node.rb
akephalos-0.2.3 lib/akephalos/node.rb
akephalos-0.2.2-java lib/akephalos/node.rb
akephalos-0.2.2 lib/akephalos/node.rb
akephalos-0.2.1 lib/akephalos/node.rb
akephalos-0.2.0 lib/akephalos/node.rb
akephalos-0.2.0-java lib/akephalos/node.rb