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

#checked?Boolean

Returns:

  • (Boolean)


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

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

#clickObject



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

def click
  page    = @browser.page_id
  options = @driver ? @driver.options : {}
  command = @browser.tell([:click, @id, options])
  
  result = @browser.wait_with_timeout(:click_response) do
    @browser.result(command) || (@browser.page_id != page)
  end
  
  if Hash === result and String === result[:value]
    raise Capybara::TimeoutError, result[:value]
  end
end

#drag_to(node) ⇒ Object



32
33
34
# File 'lib/terminus/node.rb', line 32

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

#find(xpath) ⇒ Object



36
37
38
# File 'lib/terminus/node.rb', line 36

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

#selectObject Also known as: select_option



40
41
42
# File 'lib/terminus/node.rb', line 40

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

#selected?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/terminus/node.rb', line 14

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

#set(value) ⇒ Object

Raises:

  • (Capybara::NotSupportedByDriverError)


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

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

#to_sObject Also known as: inspect



58
59
60
# File 'lib/terminus/node.rb', line 58

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

#trigger(event_type) ⇒ Object



49
50
51
# File 'lib/terminus/node.rb', line 49

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

#unselectObject Also known as: unselect_option

Raises:

  • (Capybara::UnselectNotAllowed)


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

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