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 +4 -4
- data/lib/appom/cucumber.rb +1 -0
- data/lib/appom/element_container.rb +3 -44
- data/lib/appom/element_finder.rb +159 -33
- data/lib/appom/version.rb +1 -1
- metadata +7 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f484560756312f1f488680c7dac395f8a811c38d01f691fcb3259ea905c4bd6
|
4
|
+
data.tar.gz: 9e282e64e0afdaf5c38d7e91d5304ee5136543039bc30df66761ff8281079751
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c39d03e79e31c983eda9dca7d4bafcf00994b2f60783f3d1723f108d89e9eb965bbd5d8aa197e394c4a60c0201a325e16ec700487a82ef34441ae401703de734
|
7
|
+
data.tar.gz: dc9c89c08d924e9e9d932f29598c42c3a852845c62083fd65b582d3007160993c6c163bffcbf1d8ac234db7cabe90537e2c7334a475068df060bc1952aecb80f
|
data/lib/appom/cucumber.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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,
|
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
|
data/lib/appom/element_finder.rb
CHANGED
@@ -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
|
-
|
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
|
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
|
-
#
|
39
|
-
#
|
40
|
-
def
|
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
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
if
|
48
|
-
|
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
|
-
|
53
|
-
|
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
|
-
|
172
|
+
|
56
173
|
end
|
57
174
|
end
|
58
175
|
|
59
|
-
|
60
|
-
|
61
|
-
def
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
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
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.
|
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:
|
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.
|
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
|
-
|
93
|
-
|
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: []
|