appom 1.1.4 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
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: []