Class: AppPrism::Elements::Element
- Inherits:
-
Object
- Object
- AppPrism::Elements::Element
- Includes:
- NestedElements
- Defined in:
- lib/app_prism/elements/element.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#locator ⇒ Object
readonly
Returns the value of attribute locator.
-
#platform ⇒ Object
readonly
Returns the value of attribute platform.
Instance Method Summary collapse
- #clear ⇒ Object
- #click ⇒ Object
- #default_wait_time ⇒ Object
- #element ⇒ Object
-
#initialize(identifiers, driver) ⇒ Element
constructor
A new instance of Element.
-
#nested_element(identifiers) ⇒ Object
def swipe_up @platform.swipe_up(@locator) end.
-
#parent ⇒ Object
def value get_parameter ‘value’ end.
- #send_keys(text) ⇒ Object
-
#size ⇒ Object
def scroll_into_view raise ‘Does not work yet’ end.
-
#text ⇒ Object
def long_press when_visible @platform.long_touch(@locator) end.
- #touch ⇒ Object
- #visible? ⇒ Boolean
- #wait_for(wait_time: default_wait_time) ⇒ Object
- #when_not_visible(wait_time = default_wait_time) ⇒ Object
- #when_visible(wait_time = default_wait_time) ⇒ Object
Methods included from NestedElements
Constructor Details
#initialize(identifiers, driver) ⇒ Element
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/app_prism/elements/element.rb', line 7 def initialize(identifiers, driver) if identifiers.is_a?(Selenium::WebDriver::Element) @element = identifiers else if identifiers.keys.include?(:android) || identifiers.keys.include?(:ios) @locator = identifiers[:android] if android? @locator = identifiers[:ios] if ios? else @locator = identifiers end end @platform = driver end |
Instance Attribute Details
#locator ⇒ Object (readonly)
Returns the value of attribute locator.
5 6 7 |
# File 'lib/app_prism/elements/element.rb', line 5 def locator @locator end |
#platform ⇒ Object (readonly)
Returns the value of attribute platform.
5 6 7 |
# File 'lib/app_prism/elements/element.rb', line 5 def platform @platform end |
Instance Method Details
#clear ⇒ Object
108 109 110 |
# File 'lib/app_prism/elements/element.rb', line 108 def clear element.send_keys '' end |
#click ⇒ Object
116 117 118 |
# File 'lib/app_prism/elements/element.rb', line 116 def click element.click end |
#default_wait_time ⇒ Object
90 91 92 |
# File 'lib/app_prism/elements/element.rb', line 90 def default_wait_time AppPrism::DEFAULT_WAIT_TIME || 30 end |
#element ⇒ Object
21 22 23 24 25 |
# File 'lib/app_prism/elements/element.rb', line 21 def element @element || @platform.find_element(@locator) rescue RuntimeError nil end |
#nested_element(identifiers) ⇒ Object
def swipe_up
@platform.swipe_up(@locator)
end
71 72 73 74 75 |
# File 'lib/app_prism/elements/element.rb', line 71 def nested_element(identifiers) nested_elt = element.find_element(identifiers[:android]) if android? nested_elt = element.find_element(identifiers[:ios]) if ios? self.class.new(nested_elt, @platform) end |
#parent ⇒ Object
def value
get_parameter 'value'
end
133 134 135 136 137 138 139 140 141 142 |
# File 'lib/app_prism/elements/element.rb', line 133 def parent loc = if @locator.has_key? :xpath @locator[:xpath] + '/..' elsif @locator.has_key? :id "//*[@id=\"#{@locator[:id]}\"]/.." else raise 'Something wrong happened' end @platform.find_element(loc) end |
#send_keys(text) ⇒ Object
104 105 106 |
# File 'lib/app_prism/elements/element.rb', line 104 def send_keys(text) element.send_keys text end |
#size ⇒ Object
def scroll_into_view
raise 'Does not work yet'
end
157 158 159 160 161 162 163 |
# File 'lib/app_prism/elements/element.rb', line 157 def size element.size # rect = get_element['rect'] # height = rect['height'] # width = rect['width'] # {height: height, width: width} end |
#text ⇒ Object
def long_press
when_visible
@platform.long_touch(@locator)
end
125 126 127 |
# File 'lib/app_prism/elements/element.rb', line 125 def text element.text end |
#touch ⇒ Object
112 113 114 |
# File 'lib/app_prism/elements/element.rb', line 112 def touch when_visible.click end |
#visible? ⇒ Boolean
144 145 146 147 |
# File 'lib/app_prism/elements/element.rb', line 144 def visible? element.nil? ? false : element.displayed? # element ? element.displayed? : false end |
#wait_for(wait_time: default_wait_time) ⇒ Object
94 95 96 97 98 99 100 101 102 |
# File 'lib/app_prism/elements/element.rb', line 94 def wait_for(wait_time: default_wait_time) start_time = Time.now loop do return true if yield break unless (Time.now - start_time) < wait_time sleep 0.5 end raise Timeout::Error, "Timed out while waiting for locator:\"#{@locator}\"" end |
#when_not_visible(wait_time = default_wait_time) ⇒ Object
84 85 86 87 88 |
# File 'lib/app_prism/elements/element.rb', line 84 def when_not_visible(wait_time = default_wait_time) wait_for(wait_time: wait_time) { !visible? } rescue Selenium::WebDriver::Error::NoSuchElementError,Timeout::Error,RuntimeError return end |
#when_visible(wait_time = default_wait_time) ⇒ Object
77 78 79 80 81 82 |
# File 'lib/app_prism/elements/element.rb', line 77 def when_visible(wait_time = default_wait_time) wait_for(wait_time: wait_time) { visible? } self rescue Timeout::Error false end |