appom 1.1.6 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/appom/element_container.rb +3 -47
- data/lib/appom/element_finder.rb +80 -28
- data/lib/appom/version.rb +1 -1
- metadata +6 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75497e842dc00bf929ffd3752fdc74c3dfb34094c8f74b360e51c137e654f93d
|
4
|
+
data.tar.gz: bf5f95feb5aaf74bc1ee39f7a9592c9d6f3b63b3a60d5225777f8f5f506ee806
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '09ea6e4f15eaadcad9627066bad3c51f228882a59b36470a1ff4fc5360b525220bf1f7769bebf019b827ac5c1d6632015695a98c63f19581a5059d3d77bc4a0b'
|
7
|
+
data.tar.gz: 8b135b65504c6212668ef6d3a6be1f4dd819e44bb11c14a166f4ab229202603ca50e4e4d9d795418b8f6b6c673f0b7be800f7e8304eaa3e2fe99c6b66bdcaa6d
|
@@ -42,20 +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
|
-
|
47
|
-
build_element(name, *args) do
|
45
|
+
build_element(name, *find_args) do
|
48
46
|
define_method(name) do |*runtime_args, &block|
|
49
47
|
raise_if_block(self, name, !block.nil?, :element)
|
50
|
-
|
51
|
-
_find(*merge_args(args, runtime_args))
|
52
|
-
else
|
53
|
-
find_element_has_text(text, *merge_args(args, runtime_args))
|
54
|
-
end
|
48
|
+
_find(*merge_args(find_args, runtime_args))
|
55
49
|
end
|
56
50
|
|
57
|
-
create_get_element_params(name,
|
58
|
-
define_get_element_text(name, text)
|
51
|
+
create_get_element_params(name, find_args)
|
59
52
|
end
|
60
53
|
end
|
61
54
|
|
@@ -274,43 +267,6 @@ module Appom
|
|
274
267
|
end
|
275
268
|
end
|
276
269
|
|
277
|
-
##
|
278
|
-
# Get text is passed when declared element
|
279
|
-
#
|
280
|
-
def define_get_element_text(element_name, text)
|
281
|
-
method_name = "#{element_name}_text"
|
282
|
-
define_method(method_name) do
|
283
|
-
text
|
284
|
-
end
|
285
|
-
end
|
286
|
-
|
287
|
-
##
|
288
|
-
# Deduce args and other parameters
|
289
|
-
# @return args for appium and other parameters
|
290
|
-
#
|
291
|
-
def deduce_element_args(args)
|
292
|
-
# Flatten argument array first if we are in case array inside array
|
293
|
-
args = args.flatten
|
294
|
-
|
295
|
-
if args.empty?
|
296
|
-
raise(ArgumentError, 'You should provide search arguments in element creation')
|
297
|
-
end
|
298
|
-
|
299
|
-
# Get last key and check if it contain 'text' key
|
300
|
-
text = nil
|
301
|
-
|
302
|
-
args.each do |arg|
|
303
|
-
if arg.is_a?(Hash)
|
304
|
-
# Extract text value
|
305
|
-
if arg.key?(:text)
|
306
|
-
text = arg[:text]
|
307
|
-
args.delete(arg)
|
308
|
-
end
|
309
|
-
end
|
310
|
-
end
|
311
|
-
[args, text]
|
312
|
-
end
|
313
|
-
|
314
270
|
##
|
315
271
|
# Extract section options
|
316
272
|
# @return section class name and the remaining parameters
|
data/lib/appom/element_finder.rb
CHANGED
@@ -2,16 +2,30 @@ 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)
|
7
|
+
|
6
8
|
wait.until do
|
7
|
-
elements = page.find_elements(*
|
9
|
+
elements = page.find_elements(*args)
|
8
10
|
elements.each do |element|
|
9
|
-
if
|
11
|
+
if !visible.nil? && !text.nil?
|
12
|
+
if element.displayed? && element.text == text
|
13
|
+
return element
|
14
|
+
end
|
15
|
+
elsif !visible.nil?
|
16
|
+
if element.displayed?
|
17
|
+
return element
|
18
|
+
end
|
19
|
+
elsif !text.nil?
|
20
|
+
if element.text == text
|
21
|
+
return element
|
22
|
+
end
|
23
|
+
# Just return first element
|
24
|
+
else
|
10
25
|
return element
|
11
26
|
end
|
12
27
|
end
|
13
|
-
|
14
|
-
raise Appom::ElementsEmptyError, "Not found element displayed"
|
28
|
+
raise Appom::ElementsEmptyError, "Can not found element with args = #{find_args}"
|
15
29
|
end
|
16
30
|
end
|
17
31
|
|
@@ -20,11 +34,32 @@ module Appom
|
|
20
34
|
page.find_elements(*find_args)
|
21
35
|
end
|
22
36
|
|
23
|
-
# Check page has or has not
|
37
|
+
# Check page has or has not element with find_args
|
24
38
|
# If page has element return TRUE else return FALSE
|
25
39
|
def _check_has_element(*find_args)
|
26
|
-
elements = page.find_elements(*
|
27
|
-
|
40
|
+
elements = page.find_elements(*args)
|
41
|
+
|
42
|
+
if visible.nil? && text.nil?
|
43
|
+
return elements.empty? ? false : true
|
44
|
+
else
|
45
|
+
is_found = false
|
46
|
+
elements.each do |element|
|
47
|
+
if !visible.nil? && !text.nil?
|
48
|
+
if element.displayed? && element.text == text
|
49
|
+
is_found = true
|
50
|
+
end
|
51
|
+
elsif !visible.nil?
|
52
|
+
if element.displayed?
|
53
|
+
is_found = true
|
54
|
+
end
|
55
|
+
elsif !text.nil?
|
56
|
+
if element.text == text
|
57
|
+
is_found = true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
return is_found
|
62
|
+
end
|
28
63
|
end
|
29
64
|
|
30
65
|
##
|
@@ -37,29 +72,13 @@ module Appom
|
|
37
72
|
result = page.find_elements(*find_args)
|
38
73
|
# If reponse is empty we will return false to make it not pass Wait condition
|
39
74
|
if result.empty?
|
40
|
-
raise Appom::ElementsEmptyError, "
|
75
|
+
raise Appom::ElementsEmptyError, "Can not found any elements with args = #{find_args}"
|
41
76
|
end
|
42
77
|
# Return result
|
43
78
|
return result
|
44
79
|
end
|
45
80
|
end
|
46
81
|
|
47
|
-
# Find element with has text match with `text` value
|
48
|
-
# If not find element will raise error
|
49
|
-
def find_element_has_text(text, *find_args)
|
50
|
-
wait = Wait.new(timeout: Appom.max_wait_time)
|
51
|
-
wait.until do
|
52
|
-
elements = page.find_elements(*find_args)
|
53
|
-
elements.each do |element|
|
54
|
-
if element.displayed? && element.text == text
|
55
|
-
return element
|
56
|
-
end
|
57
|
-
|
58
|
-
raise Appom::ElementsEmptyError, "Not found element with text #{text}"
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
82
|
# Function is used to check
|
64
83
|
# Note: Function WILL NOT RETURN ELEMENT
|
65
84
|
def wait_until(type, *find_args)
|
@@ -68,18 +87,51 @@ module Appom
|
|
68
87
|
case type
|
69
88
|
# Function only return true if element enabled or raise an error if time out
|
70
89
|
when 'element enable'
|
71
|
-
|
90
|
+
_find(*find_args).enabled?
|
72
91
|
# Function only return true if element disabled or raise an error if time out
|
73
92
|
when 'element disable'
|
74
|
-
!
|
93
|
+
!_find(*find_args).enabled?
|
75
94
|
# Function only return true if we can find at leat one element (array is not empty) or raise error
|
76
95
|
when 'at least one element exists'
|
77
|
-
|
96
|
+
args, text, visible = deduce_element_args(find_args)
|
97
|
+
!page.find_elements(*args).empty?
|
78
98
|
# Function only return true if we can't find at leat one element (array is empty) or raise error
|
79
99
|
when 'no element exists'
|
80
|
-
|
100
|
+
args, text, visible = deduce_element_args(find_args)
|
101
|
+
page.find_elements(*args).empty?
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
private
|
107
|
+
|
108
|
+
def deduce_element_args(args)
|
109
|
+
# Flatten argument array first if we are in case array inside array
|
110
|
+
args = args.flatten
|
111
|
+
|
112
|
+
if args.empty?
|
113
|
+
raise(ArgumentError, 'You should provide search arguments in element creation')
|
114
|
+
end
|
115
|
+
|
116
|
+
# Get last key and check if it contain 'text' key
|
117
|
+
text = nil
|
118
|
+
visible = nil
|
119
|
+
|
120
|
+
args.each do |arg|
|
121
|
+
if arg.is_a?(Hash)
|
122
|
+
# Extract text value
|
123
|
+
if arg.key?(:text)
|
124
|
+
text = arg[:text]
|
125
|
+
args.delete(arg)
|
126
|
+
end
|
127
|
+
# Extract visible value
|
128
|
+
if arg.key?(:visible)
|
129
|
+
visible = arg[:visible]
|
130
|
+
args.delete(arg)
|
131
|
+
end
|
81
132
|
end
|
82
133
|
end
|
134
|
+
[args, text, visible]
|
83
135
|
end
|
84
136
|
end
|
85
137
|
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.3.0
|
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-08-13 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
|
@@ -89,9 +89,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
89
89
|
- !ruby/object:Gem::Version
|
90
90
|
version: '0'
|
91
91
|
requirements: []
|
92
|
-
|
93
|
-
|
94
|
-
signing_key:
|
92
|
+
rubygems_version: 3.2.19
|
93
|
+
signing_key:
|
95
94
|
specification_version: 4
|
96
95
|
summary: A Page Object Model for Appium
|
97
96
|
test_files: []
|