Class: ScreenObject::AppElements::Element

Inherits:
Object
  • Object
show all
Defined in:
lib/screen-object/accessors/element.rb

Direct Known Subclasses

Button, CheckBox, Image, Table, Text, TextField

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(locator) ⇒ Element

Returns a new instance of Element.



22
23
24
# File 'lib/screen-object/accessors/element.rb', line 22

def initialize(locator)
  @locator=locator.split("~")
end

Instance Attribute Details

#locatorObject (readonly)

Returns the value of attribute locator.



20
21
22
# File 'lib/screen-object/accessors/element.rb', line 20

def locator
  @locator
end

Instance Method Details

#clickObject



30
31
32
# File 'lib/screen-object/accessors/element.rb', line 30

def click
    element.click
end

#click_dynamic_exact_text(text) ⇒ Object



133
134
135
136
137
138
139
140
# File 'lib/screen-object/accessors/element.rb', line 133

def click_dynamic_exact_text(text)
  if dynamic_text_exists?(text)
    element.click
  else
    scroll_to_exact_text(text)
    element.click
  end
end

#click_dynamic_text(text) ⇒ Object



115
116
117
118
119
120
121
122
# File 'lib/screen-object/accessors/element.rb', line 115

def click_dynamic_text(text)
  if dynamic_text_exists?(text)
    element.click
  else
    scroll_to_text(text)
    element.click
  end
end

#click_exact_text(text) ⇒ Object



124
125
126
127
128
129
130
131
# File 'lib/screen-object/accessors/element.rb', line 124

def click_exact_text(text)
  if exists?
    click
  else
    scroll_to_exact_text(text)
    element.click
  end
end

#click_text(text) ⇒ Object



106
107
108
109
110
111
112
113
# File 'lib/screen-object/accessors/element.rb', line 106

def click_text(text)
  if exists?
    click
  else
    scroll_to_text(text)
    element.click
  end
end

#driverObject



26
27
28
# File 'lib/screen-object/accessors/element.rb', line 26

def driver
  $driver
end

#dynamic_text_exists?(dynamic_text) ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
70
71
72
73
# File 'lib/screen-object/accessors/element.rb', line 67

def dynamic_text_exists? dynamic_text
  begin
    dynamic_xpath(dynamic_text).displayed?
  rescue
    false
  end
end

#dynamic_xpath(text) ⇒ Object



58
59
60
61
62
63
64
65
# File 'lib/screen-object/accessors/element.rb', line 58

def dynamic_xpath(text)
  concat_attribute=[]
  element_attributes.each{|i| concat_attribute << %Q(contains(@#{i}, '#{text}'))}
  puts  "//#{locator[0]}[#{concat_attribute.join(' or ')}]"
  locator1="xpath~//#{locator[0]}[#{concat_attribute.join(' or ')}]"
  @locator=locator1.split("~")
  element
end

#elementObject



46
47
48
# File 'lib/screen-object/accessors/element.rb', line 46

def element
  driver.find_element(:"#{locator[0]}",locator[1])
end

#element_attributesObject



54
55
56
# File 'lib/screen-object/accessors/element.rb', line 54

def element_attributes
  %w[name resource-id value text]
end

#elementsObject



50
51
52
# File 'lib/screen-object/accessors/element.rb', line 50

def elements
  driver.find_elements(:"#{locator[0]}",locator[1])
end

#exists?Boolean

Returns:

  • (Boolean)


38
39
40
41
42
43
44
# File 'lib/screen-object/accessors/element.rb', line 38

def exists?
  begin
    element.displayed?
  rescue
    false
  end
end

#scrollObject



75
76
77
78
# File 'lib/screen-object/accessors/element.rb', line 75

def scroll
  $driver.execute_script 'mobile: scrollTo',:element => element.ref
  # $driver.execute_script("mobile: scroll",:direction => direction.downcase, :element => element.ref)
end

#scroll_for_dynamic_element_click(expected_text) ⇒ Object



97
98
99
100
101
102
103
104
# File 'lib/screen-object/accessors/element.rb', line 97

def scroll_for_dynamic_element_click (expected_text)
  if dynamic_xpath(expected_text).displayed?
    element.click
  else
    scroll
    element.click
  end
end

#scroll_for_element_clickObject



88
89
90
91
92
93
94
95
# File 'lib/screen-object/accessors/element.rb', line 88

def scroll_for_element_click
  if element.displayed?
    element.click
  else
    scroll
    element.click
  end
end

#scroll_to_exact_text(text) ⇒ Object



84
85
86
# File 'lib/screen-object/accessors/element.rb', line 84

def scroll_to_exact_text(text)
  $driver.scroll_to_exact(text)
end

#scroll_to_text(text) ⇒ Object



80
81
82
# File 'lib/screen-object/accessors/element.rb', line 80

def scroll_to_text(text)
  $driver.scroll_to(text)
end

#valueObject



34
35
36
# File 'lib/screen-object/accessors/element.rb', line 34

def value
    element.value
end