Class: Pincers::Backend::Webdriver

Inherits:
Base
  • Object
show all
Defined in:
lib/pincers/backend/webdriver.rb

Instance Attribute Summary

Attributes inherited from Base

#document

Instance Method Summary collapse

Methods inherited from Base

#clear_input, #switch_to_parent_frame

Constructor Details

#initialize(_driver) ⇒ Webdriver

Returns a new instance of Webdriver.



10
11
12
# File 'lib/pincers/backend/webdriver.rb', line 10

def initialize(_driver)
  super _driver
end

Instance Method Details

#check_enabled(_elements) ⇒ Object



139
140
141
# File 'lib/pincers/backend/webdriver.rb', line 139

def check_enabled(_elements)
  check_visible(_elements) and _elements.first.enabled?
end

#check_not_visible(_elements) ⇒ Object



143
144
145
# File 'lib/pincers/backend/webdriver.rb', line 143

def check_not_visible(_elements)
  not _elements.any? { |e| e.displayed? }
end

#check_visible(_elements) ⇒ Object



135
136
137
# File 'lib/pincers/backend/webdriver.rb', line 135

def check_visible(_elements)
  _elements.first.displayed?
end

#click_on_element(_element, _modifiers) ⇒ Object



94
95
96
97
98
99
100
101
# File 'lib/pincers/backend/webdriver.rb', line 94

def click_on_element(_element, _modifiers)
  _element = ensure_ready_for_input _element
  if _modifiers.length == 0
    _element.click
  else
    click_with_modifiers(_element, _modifiers)
  end
end

#close_documentObject



50
51
52
# File 'lib/pincers/backend/webdriver.rb', line 50

def close_document
  driver.quit rescue nil
end

#document_rootObject



18
19
20
# File 'lib/pincers/backend/webdriver.rb', line 18

def document_root
  [driver]
end

#document_titleObject



26
27
28
# File 'lib/pincers/backend/webdriver.rb', line 26

def document_title
  driver.title
end

#document_urlObject



22
23
24
# File 'lib/pincers/backend/webdriver.rb', line 22

def document_url
  driver.current_url
end

#double_click_on_element(_element) ⇒ Object



109
110
111
112
113
# File 'lib/pincers/backend/webdriver.rb', line 109

def double_click_on_element(_element)
  assert_has_input_devices_for :double_click_on_element
  _element = ensure_ready_for_input _element
  actions.double_click(_element).perform
end

#drag_and_drop(_element, _on) ⇒ Object



121
122
123
124
125
# File 'lib/pincers/backend/webdriver.rb', line 121

def drag_and_drop(_element, _on)
  assert_has_input_devices_for :drag_and_drop
  _element = ensure_input_element _element
  actions.drag_and_drop(_element, _on).perform
end

#element_is_actionable?(_element) ⇒ Boolean

Returns:

  • (Boolean)


82
83
84
85
86
# File 'lib/pincers/backend/webdriver.rb', line 82

def element_is_actionable?(_element)
  # this is the base requisite in webdriver for actionable elements:
  # non displayed items will always error on action
  _element.displayed?
end

#extract_element_attribute(_element, _name) ⇒ Object



77
78
79
80
# File 'lib/pincers/backend/webdriver.rb', line 77

def extract_element_attribute(_element, _name)
  _element = ensure_element _element
  _element[_name]
end

#extract_element_html(_element) ⇒ Object



72
73
74
75
# File 'lib/pincers/backend/webdriver.rb', line 72

def extract_element_html(_element)
  return driver.page_source if _element == driver
  _element.attribute 'outerHTML'
end

#extract_element_tag(_element) ⇒ Object



62
63
64
65
# File 'lib/pincers/backend/webdriver.rb', line 62

def extract_element_tag(_element)
  _element = ensure_element _element
  _element.tag_name
end

#extract_element_text(_element) ⇒ Object



67
68
69
70
# File 'lib/pincers/backend/webdriver.rb', line 67

def extract_element_text(_element)
  _element = ensure_element _element
  _element.text
end

#fetch_cookiesObject



30
31
32
# File 'lib/pincers/backend/webdriver.rb', line 30

def fetch_cookies
  driver.manage.all_cookies
end

#hover_over_element(_element) ⇒ Object



115
116
117
118
119
# File 'lib/pincers/backend/webdriver.rb', line 115

def hover_over_element(_element)
  assert_has_input_devices_for :hover_over_element
  _element = ensure_ready_for_input _element
  actions.move_to(_element).perform
end

#javascript_enabled?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/pincers/backend/webdriver.rb', line 14

def javascript_enabled?
  true
end


42
43
44
# File 'lib/pincers/backend/webdriver.rb', line 42

def navigate_back(_steps)
  _steps.times { driver.navigate.back }
end


38
39
40
# File 'lib/pincers/backend/webdriver.rb', line 38

def navigate_forward(_steps)
  _steps.times { driver.navigate.forward }
end


34
35
36
# File 'lib/pincers/backend/webdriver.rb', line 34

def navigate_to(_url)
  driver.get _url
end

#refresh_documentObject



46
47
48
# File 'lib/pincers/backend/webdriver.rb', line 46

def refresh_document
  driver.navigate.refresh
end

#right_click_on_element(_element) ⇒ Object



103
104
105
106
107
# File 'lib/pincers/backend/webdriver.rb', line 103

def right_click_on_element(_element)
  assert_has_input_devices_for :right_click_on_element
  _element = ensure_ready_for_input _element
  actions.context_click(_element).perform
end

#search_by_css(_element, _selector, _limit) ⇒ Object



54
55
56
# File 'lib/pincers/backend/webdriver.rb', line 54

def search_by_css(_element, _selector, _limit)
  search _element, { css: _selector }, _limit
end

#search_by_xpath(_element, _selector, _limit) ⇒ Object



58
59
60
# File 'lib/pincers/backend/webdriver.rb', line 58

def search_by_xpath(_element, _selector, _limit)
  search _element, { xpath: _selector }, _limit
end

#set_element_text(_element, _value) ⇒ Object



88
89
90
91
92
# File 'lib/pincers/backend/webdriver.rb', line 88

def set_element_text(_element, _value)
  _element = ensure_ready_for_input _element
  _element.clear
  _element.send_keys _value
end

#switch_to_frame(_element) ⇒ Object



127
128
129
# File 'lib/pincers/backend/webdriver.rb', line 127

def switch_to_frame(_element)
  driver.switch_to.frame _element
end

#switch_to_top_frameObject



131
132
133
# File 'lib/pincers/backend/webdriver.rb', line 131

def switch_to_top_frame
  driver.switch_to.default_content
end