appom 1.1.4 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af44a4930d45306b62a8b2f383feed589ce9f6d7ce606f0425bda6f940eb3eb5
4
- data.tar.gz: cbe7893e9b5ebac45b2488f5aa01092a46fc56ed7875217f186a37e4b4ac3b3c
3
+ metadata.gz: 2f484560756312f1f488680c7dac395f8a811c38d01f691fcb3259ea905c4bd6
4
+ data.tar.gz: 9e282e64e0afdaf5c38d7e91d5304ee5136543039bc30df66761ff8281079751
5
5
  SHA512:
6
- metadata.gz: 3f0121294b4234366135e9a148d2b87dedac876ccd8d3a555adfc0479e9803beb257b9f8c378d4eb228b73b9b00911a643c3d5c39f79ed15d37503d8d4a2f947
7
- data.tar.gz: f8a2a3a4aa46a3077fc532166268907f8dc165b34e5afb08d4c801d9e7da810d3255894ec02ed3573146049fbfa9a26c0956bf2c9cd1a402182f27ba0d61e951
6
+ metadata.gz: c39d03e79e31c983eda9dca7d4bafcf00994b2f60783f3d1723f108d89e9eb965bbd5d8aa197e394c4a60c0201a325e16ec700487a82ef34441ae401703de734
7
+ data.tar.gz: dc9c89c08d924e9e9d932f29598c42c3a852845c62083fd65b582d3007160993c6c163bffcbf1d8ac234db7cabe90537e2c7334a475068df060bc1952aecb80f
@@ -2,5 +2,6 @@
2
2
 
3
3
  # We will start driver before each scenario
4
4
  Before do
5
+ puts "---------Start Appom --------1"
5
6
  Appom.start_driver
6
7
  end
@@ -42,19 +42,13 @@ module Appom
42
42
  # Element doesn't support block so that will raise if pass a block when declare
43
43
  #
44
44
  def element(name, *find_args)
45
- text, args = deduce_element_text(find_args)
46
- build_element(name, *args) do
45
+ build_element(name, *find_args) do
47
46
  define_method(name) do |*runtime_args, &block|
48
47
  raise_if_block(self, name, !block.nil?, :element)
49
- if text.nil?
50
- _find(*merge_args(args, runtime_args))
51
- else
52
- find_element_has_text(text, *merge_args(args, runtime_args))
53
- end
48
+ _find(*merge_args(find_args, runtime_args))
54
49
  end
55
50
 
56
- create_get_element_params(name, args)
57
- define_get_element_text(name, text)
51
+ create_get_element_params(name, find_args)
58
52
  end
59
53
  end
60
54
 
@@ -273,41 +267,6 @@ module Appom
273
267
  end
274
268
  end
275
269
 
276
- ##
277
- # Get text is passed when declared element
278
- #
279
- def define_get_element_text(element_name, text)
280
- method_name = "#{element_name}_text"
281
- define_method(method_name) do
282
- text
283
- end
284
- end
285
-
286
- ##
287
- # Deduce text value
288
- # @return expected text for element and the remaining parameters
289
- #
290
- def deduce_element_text(args)
291
- # Flatten argument array first if we are in case array inside array
292
- args = args.flatten
293
-
294
- if args.empty?
295
- raise(ArgumentError, 'You should provide search arguments in element creation')
296
- end
297
-
298
- # Get last key and check if it contain 'text' key
299
- last_key = args.last
300
- text = nil
301
- if last_key.is_a?(Hash)
302
- if last_key.key?(:text)
303
- text = last_key[:text]
304
- args.pop
305
- end
306
- end
307
-
308
- [text, args]
309
- end
310
-
311
270
  ##
312
271
  # Extract section options
313
272
  # @return section class name and the remaining parameters
@@ -2,8 +2,32 @@ module Appom
2
2
  module ElementFinder
3
3
  # Find an element
4
4
  def _find(*find_args)
5
+ args, text, visible = deduce_element_args(find_args)
5
6
  wait = Wait.new(timeout: Appom.max_wait_time)
6
- wait.until { page.find_element(*find_args) }
7
+
8
+ if visible.nil? && text.nil?
9
+ wait.until { page.find_element(*find_args) }
10
+ else
11
+ wait.until do
12
+ elements = page.find_elements(*args)
13
+ elements.each do |element|
14
+ if !visible.nil? && !text.nil?
15
+ if element.displayed? && element.text == text
16
+ return element
17
+ end
18
+ elsif !visible.nil?
19
+ if element.displayed?
20
+ return element
21
+ end
22
+ elsif !text.nil?
23
+ if element.text == text
24
+ return element
25
+ end
26
+ end
27
+ end
28
+ raise Appom::ElementsEmptyError, "Not found element with text #{text}"
29
+ end
30
+ end
7
31
  end
8
32
 
9
33
  # Find elements
@@ -11,7 +35,7 @@ module Appom
11
35
  page.find_elements(*find_args)
12
36
  end
13
37
 
14
- # Check page has or has not elment with find_args
38
+ # Check page has or has not element with find_args
15
39
  # If page has element return TRUE else return FALSE
16
40
  def _check_has_element(*find_args)
17
41
  elements = page.find_elements(*find_args)
@@ -35,47 +59,149 @@ module Appom
35
59
  end
36
60
  end
37
61
 
38
- # Find element with has text match with `text` value
39
- # If not find element will raise error
40
- def find_element_has_text(text, *find_args)
62
+ # Function is used to check
63
+ # Note: Function WILL NOT RETURN ELEMENT
64
+ def wait_until(type, *find_args)
41
65
  wait = Wait.new(timeout: Appom.max_wait_time)
42
- wait.until do
43
- elements = page.find_elements(*find_args)
44
- is_found = false
45
- elements.each do |element|
46
- element_text = element.text
47
- if element_text == text
48
- return element
66
+ args, text, visible = deduce_element_args(find_args)
67
+
68
+ if visible.nil? && text.nil?
69
+ wait.until do
70
+ case type
71
+ # Function only return true if element enabled or raise an error if time out
72
+ when 'element enable'
73
+ _find(*args).enabled?
74
+
75
+ # Function only return true if element disabled or raise an error if time out
76
+ when 'element disable'
77
+ !_find(*args).enabled?
78
+
79
+ # Function only return true if we can find at leat one element (array is not empty) or raise error
80
+ when 'at least one element exists'
81
+ !page.find_elements(*args).empty?
82
+
83
+ # Function only return true if we can't find at leat one element (array is empty) or raise error
84
+ when 'no element exists'
85
+ page.find_elements(*args).empty?
49
86
  end
50
87
  end
88
+ else
89
+ wait.until do
90
+ case type
91
+ # Function only return true if element enabled or raise an error if time out
92
+ when 'element enable'
93
+ elements = page.find_elements(*args)
94
+ elements.each do |element|
95
+ if !visible.nil? && !text.nil?
96
+ if element.displayed? && element.text == text && element.enabled?
97
+ return element
98
+ end
99
+ elsif !visible.nil?
100
+ if element.displayed? && element.enabled?
101
+ return element
102
+ end
103
+ elsif !text.nil?
104
+ if element.text == text && element.enabled?
105
+ return element
106
+ end
107
+ end
108
+ end
109
+ raise Appom::ElementsEmptyError, "Not found element"
51
110
 
52
- if !is_found
53
- raise Appom::ElementsEmptyError, "Not found element with text #{text}"
111
+ # Function only return true if element disabled or raise an error if time out
112
+ when 'element disable'
113
+ elements = page.find_elements(*args)
114
+ elements.each do |element|
115
+ if !visible.nil? && !text.nil?
116
+ if element.displayed? && element.text == text && !element.enabled?
117
+ return element
118
+ end
119
+ elsif !visible.nil?
120
+ if element.displayed? && !element.enabled?
121
+ return element
122
+ end
123
+ elsif !text.nil?
124
+ if element.text == text && !element.enabled?
125
+ return element
126
+ end
127
+ end
128
+ end
129
+ raise Appom::ElementsEmptyError, "Not found element"
130
+
131
+ # Function only return true if we can find at leat one element (array is not empty) or raise error
132
+ when 'at least one element exists'
133
+ elements = page.find_elements(*args)
134
+ elements.each do |element|
135
+ if !visible.nil? && !text.nil?
136
+ if element.displayed? && element.text == text
137
+ return element
138
+ end
139
+ elsif !visible.nil?
140
+ if element.displayed?
141
+ return element
142
+ end
143
+ elsif !text.nil?
144
+ if element.text == text
145
+ return element
146
+ end
147
+ end
148
+ end
149
+ raise Appom::ElementsEmptyError, "Not found element"
150
+
151
+ # Function only return true if we can't find at leat one element (array is empty) or raise error
152
+ when 'no element exists'
153
+ elements = page.find_elements(*args)
154
+ elements.each do |element|
155
+ if !visible.nil? && !text.nil?
156
+ if element.displayed? && element.text == text
157
+ raise Appom::ElementsEmptyError, "Not found element"
158
+ end
159
+ elsif !visible.nil?
160
+ if element.displayed?
161
+ raise Appom::ElementsEmptyError, "Not found element"
162
+ end
163
+ elsif !text.nil?
164
+ if element.text == text
165
+ raise Appom::ElementsEmptyError, "Not found element"
166
+ end
167
+ end
168
+ end
169
+ return true
170
+ end
54
171
  end
55
- return result
172
+
56
173
  end
57
174
  end
58
175
 
59
- # Function is used to check
60
- # Note: Function WILL NOT RETURN ELEMENT
61
- def wait_until(type, *find_args)
62
- wait = Wait.new(timeout: Appom.max_wait_time)
63
- wait.until do
64
- case type
65
- # Function only return true if element enabled or raise an error if time out
66
- when 'element enable'
67
- page.find_element(*find_args).enabled?
68
- # Function only return true if element disabled or raise an error if time out
69
- when 'element disable'
70
- !page.find_element(*find_args).enabled?
71
- # Function only return true if we can find at leat one element (array is not empty) or raise error
72
- when 'at least one element exists'
73
- !page.find_elements(*find_args).empty?
74
- # Function only return true if we can't find at leat one element (array is empty) or raise error
75
- when 'no element exists'
76
- page.find_elements(*find_args).empty?
176
+ private
177
+
178
+ def deduce_element_args(args)
179
+ # Flatten argument array first if we are in case array inside array
180
+ args = args.flatten
181
+
182
+ if args.empty?
183
+ raise(ArgumentError, 'You should provide search arguments in element creation')
184
+ end
185
+
186
+ # Get last key and check if it contain 'text' key
187
+ text = nil
188
+ visible = nil
189
+
190
+ args.each do |arg|
191
+ if arg.is_a?(Hash)
192
+ # Extract text value
193
+ if arg.key?(:text)
194
+ text = arg[:text]
195
+ args.delete(arg)
196
+ end
197
+ # Extract visible value
198
+ if arg.key?(:visible)
199
+ visible = arg[:visible]
200
+ args.delete(arg)
201
+ end
77
202
  end
78
203
  end
204
+ [args, text, visible]
79
205
  end
80
206
  end
81
207
  end
data/lib/appom/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Appom
2
- VERSION = '1.1.4'.freeze
2
+ VERSION = '1.2.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appom
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry.Tran
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-19 00:00:00.000000000 Z
11
+ date: 2021-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: appium_lib
@@ -74,7 +74,7 @@ homepage: https://github.com/hoangtaiki/appom
74
74
  licenses:
75
75
  - MIT
76
76
  metadata: {}
77
- post_install_message:
77
+ post_install_message:
78
78
  rdoc_options: []
79
79
  require_paths:
80
80
  - lib
@@ -82,16 +82,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
82
  requirements:
83
83
  - - ">="
84
84
  - !ruby/object:Gem::Version
85
- version: 2.2.3
85
+ version: 2.6.3
86
86
  required_rubygems_version: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - ">="
89
89
  - !ruby/object:Gem::Version
90
90
  version: '0'
91
91
  requirements: []
92
- rubyforge_project:
93
- rubygems_version: 2.7.9
94
- signing_key:
92
+ rubygems_version: 3.0.8
93
+ signing_key:
95
94
  specification_version: 4
96
95
  summary: A Page Object Model for Appium
97
96
  test_files: []