Class: Terminus::Node

Inherits:
Object
  • Object
show all
Defined in:
lib/terminus/node.rb

Constant Summary collapse

SYNC_DSL_METHODS =
[ [:[], :attribute],
  [:[]=, :set_attribute],
  :tag_name,
  :text,
  :value,
  [:visible?, :is_visible]
]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(browser, id, driver = nil) ⇒ Node

Returns a new instance of Node.



6
7
8
# File 'lib/terminus/node.rb', line 6

def initialize(browser, id, driver = nil)
  @browser, @id, @driver = browser, id, driver
end

Instance Attribute Details

#idObject (readonly)

Returns the value of attribute id.



4
5
6
# File 'lib/terminus/node.rb', line 4

def id
  @id
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?



38
39
40
# File 'lib/terminus/node.rb', line 38

def ==(other)
  Terminus::Node === other and @id == other.id
end

#checked?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/terminus/node.rb', line 10

def checked?
  !!self['checked']
end

#clickObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/terminus/node.rb', line 14

def click
  page    = @browser.page_id
  options = @driver ? @driver.options : {}

  value = if @browser.connector
    @browser.ask([:click, @id, options], false)
  else
    command = @browser.tell([:click, @id, options])

    result = @browser.wait_with_timeout(:click_response) do
      @browser.result(command) || (@browser.page_id != page)
    end
    Hash === result ? result[:value] : nil
  end

  if String === value
    raise Capybara::TimeoutError, value
  end
end

#drag_to(node) ⇒ Object



34
35
36
# File 'lib/terminus/node.rb', line 34

def drag_to(node)
  @browser.ask([:drag, {:from => @id, :to => node.id}])
end

#find(xpath) ⇒ Object



43
44
45
# File 'lib/terminus/node.rb', line 43

def find(xpath)
  @browser.ask([:find, xpath, @id]).map { |id| Node.new(@browser, id) }
end

#hashObject



47
48
49
# File 'lib/terminus/node.rb', line 47

def hash
  @id.hash
end

#nativeObject

Capybara invokes ‘node.native ==` to determine node equality



52
53
54
# File 'lib/terminus/node.rb', line 52

def native
  self
end

#selectObject Also known as: select_option



56
57
58
# File 'lib/terminus/node.rb', line 56

def select
  @browser.ask([:select, @id])
end

#selected?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/terminus/node.rb', line 60

def selected?
  !!self['selected']
end

#set(value) ⇒ Object

Raises:

  • (Capybara::NotSupportedByDriverError)


64
65
66
67
# File 'lib/terminus/node.rb', line 64

def set(value)
  result = @browser.ask([:set, @id, value])
  raise Capybara::NotSupportedByDriverError.new if result == 'not_allowed'
end

#to_sObject Also known as: inspect



78
79
80
# File 'lib/terminus/node.rb', line 78

def to_s
  "<#{self.class.name} #{@id}>"
end

#trigger(event_type) ⇒ Object



69
70
71
# File 'lib/terminus/node.rb', line 69

def trigger(event_type)
  @browser.ask([:trigger, @id, event_type])
end

#unselectObject Also known as: unselect_option

Raises:

  • (Capybara::UnselectNotAllowed)


73
74
75
76
# File 'lib/terminus/node.rb', line 73

def unselect
  allowed = @browser.ask([:unselect, @id])
  raise Capybara::UnselectNotAllowed.new unless allowed
end