page-object-lds 0.0.12 → 0.0.13
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 +13 -5
- data/lib/TNR360/ServerUtils.rb +47 -0
- data/lib/TNR360/TNRTestFooter.rb +5 -0
- data/lib/TNR360/TNRTestHeader.rb +20 -0
- data/lib/TNR360/TnrUtils.rb +61 -0
- data/lib/TNR360/TnrUtilsGeneric.rb +91 -0
- data/lib/TNR360/TnrUtilsInes.rb +48 -0
- data/lib/TNR360/TnrUtilsMehdi.rb +35 -0
- data/lib/TNR360/components/dependencies.rb +21 -0
- data/lib/TNR360/components/lds_action.rb +62 -0
- data/lib/TNR360/components/lds_area.rb +171 -0
- data/lib/TNR360/components/lds_block.rb +271 -0
- data/lib/TNR360/components/lds_block_in_summary_view.rb +93 -0
- data/lib/TNR360/components/lds_checkbox.rb +196 -0
- data/lib/TNR360/components/lds_column.rb +153 -0
- data/lib/TNR360/components/lds_fk.rb +21 -0
- data/lib/TNR360/components/lds_grid.rb +332 -0
- data/lib/TNR360/components/lds_lov.rb +27 -0
- data/lib/TNR360/components/lds_menu.rb +50 -0
- data/lib/TNR360/components/lds_radio.rb +195 -0
- data/lib/TNR360/components/lds_screen.rb +234 -0
- data/lib/TNR360/components/lds_summary_view.rb +46 -0
- data/lib/TNR360/components/lds_text_field.rb +203 -0
- data/lib/TNR360/components/lds_vue360.rb +234 -0
- data/lib/TNR360/version.rb +3 -0
- data/lib/page-object/accessors.rb +57 -0
- data/lib/page-object/elements/text_field.rb +1 -1
- data/lib/page-object/platforms/lds_watir_webdriver/page_object.rb +48 -0
- data/lib/page-object/version.rb +1 -1
- metadata +55 -30
@@ -0,0 +1,271 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../lib/TNR360/components/dependencies.rb')
|
2
|
+
|
3
|
+
class LdsBlock
|
4
|
+
|
5
|
+
@browser
|
6
|
+
@idBlock=nil
|
7
|
+
@idScreen=nil
|
8
|
+
@title=nil
|
9
|
+
@visible=false
|
10
|
+
@editable=false
|
11
|
+
@exists=false
|
12
|
+
@collapsible=false
|
13
|
+
@collapsed=false
|
14
|
+
@hasMultipleAreas=false
|
15
|
+
@areas
|
16
|
+
@type=nil
|
17
|
+
@paginated_grid=false
|
18
|
+
@current_element
|
19
|
+
|
20
|
+
@idLine=nil
|
21
|
+
@idCel=nil
|
22
|
+
@celValue=nil
|
23
|
+
|
24
|
+
|
25
|
+
#constructor
|
26
|
+
def initialize(browser, idBlock, idScreen=nil)
|
27
|
+
@browser =browser
|
28
|
+
@idBlock=idBlock
|
29
|
+
@idScreen=idScreen
|
30
|
+
update
|
31
|
+
@exists
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
#refresh object status from browser
|
36
|
+
def refresh
|
37
|
+
#Look for element in browser
|
38
|
+
@current_element= findElement @idBlock
|
39
|
+
#update other data
|
40
|
+
update
|
41
|
+
@exists
|
42
|
+
end
|
43
|
+
|
44
|
+
#private method to update/save the status of the object
|
45
|
+
def update
|
46
|
+
@exists=false
|
47
|
+
|
48
|
+
#Look for element in browser
|
49
|
+
@current_element||= findElement @idBlock
|
50
|
+
|
51
|
+
# fill hasMultipleAreas
|
52
|
+
@hasMultipleAreas=(@current_element.div(:index => 2).fieldsets.length>1 ? true : false)
|
53
|
+
|
54
|
+
if (@hasMultipleAreas)
|
55
|
+
#extract areas if available
|
56
|
+
extractAreas
|
57
|
+
else
|
58
|
+
#fill @title
|
59
|
+
extractTitle
|
60
|
+
#fill visible
|
61
|
+
@visible=@current_element.visible?
|
62
|
+
#fill type
|
63
|
+
extractType
|
64
|
+
#fill isCollapsible
|
65
|
+
@collapsible=@current_element.div(:index => 0).div(:index => 0).div.exists?
|
66
|
+
#fill isCollapsed
|
67
|
+
@collapsed=@current_element.class_name.include? "collapsed"
|
68
|
+
end
|
69
|
+
#everything exists
|
70
|
+
@exists=true
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
#internal methods
|
75
|
+
|
76
|
+
def extractAreas
|
77
|
+
if (@hasMultipleAreas)
|
78
|
+
@areas=Array.new
|
79
|
+
#iterate through list of areas
|
80
|
+
@current_element.fieldsets.each do |fieldset|
|
81
|
+
@areas << LdsArea.new(@browser, fieldset.id.to_s, self)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
def extractType
|
88
|
+
if (@current_element.class_name.include? "form")
|
89
|
+
@type="Form"
|
90
|
+
else
|
91
|
+
@type="Grid"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def extractTitle
|
96
|
+
if @current_element.div(:index => 0).spans.length>0
|
97
|
+
@title=@current_element.div(:index => 0).span(:index => 0).text
|
98
|
+
else
|
99
|
+
@title=""
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
#method locate current element
|
104
|
+
def findElement idElement
|
105
|
+
@current_element=nil
|
106
|
+
|
107
|
+
#wait for screen to become visible (find screen forcefully)
|
108
|
+
proc=Proc.new { isScreenDisplayed }
|
109
|
+
force_find_element(proc).to_s
|
110
|
+
|
111
|
+
#wait for screen to become visible (find screen forcefully)
|
112
|
+
proc=Proc.new { elementExists?(idElement) }
|
113
|
+
@exists=force_find_element(proc)
|
114
|
+
puts 'Block found = '+@exists.to_s
|
115
|
+
|
116
|
+
if (@browser.divs(:id => idElement).length>1)
|
117
|
+
@browser.divs(:id => idElement).each do |field|
|
118
|
+
if field.visible?
|
119
|
+
@current_element=field
|
120
|
+
break
|
121
|
+
end
|
122
|
+
end
|
123
|
+
else
|
124
|
+
@current_element=@browser.div(:id => idElement).when_present
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
if @current_element.visible?
|
129
|
+
puts 'block is visible'
|
130
|
+
else
|
131
|
+
puts 'block is NOT visible'
|
132
|
+
end
|
133
|
+
@current_element
|
134
|
+
|
135
|
+
|
136
|
+
end
|
137
|
+
|
138
|
+
|
139
|
+
def elementExists?(idElement)
|
140
|
+
#this method assumes the screen/tab is already loaded
|
141
|
+
oneIsVisible=false
|
142
|
+
#if element not yet available in screen, wait for some time
|
143
|
+
if (!@browser.div(:id => idElement).exists?)
|
144
|
+
@browser.div(:id => idElement).when_present(10)
|
145
|
+
oneIsVisible=true
|
146
|
+
else
|
147
|
+
if (!@browser.div(:id => idElement).visible?)
|
148
|
+
@browser.divs(:id => idElement).each do |field|
|
149
|
+
if field.visible?
|
150
|
+
oneIsVisible=true
|
151
|
+
break
|
152
|
+
end
|
153
|
+
end
|
154
|
+
if !oneIsVisible
|
155
|
+
@browser.div(:id => idElement).when_present(10)
|
156
|
+
oneIsVisible=true
|
157
|
+
end
|
158
|
+
else
|
159
|
+
oneIsVisible=true
|
160
|
+
end
|
161
|
+
end
|
162
|
+
oneIsVisible
|
163
|
+
end
|
164
|
+
|
165
|
+
def isScreenDisplayed
|
166
|
+
if (@idScreen!=nil)
|
167
|
+
@scr=LdsScreen.new(@browser, @idScreen)
|
168
|
+
@scr.isVisible?
|
169
|
+
else
|
170
|
+
false
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
|
175
|
+
#print object
|
176
|
+
def to_s
|
177
|
+
if (@hasMultipleAreas && @areas!=nil)
|
178
|
+
@areas.each do |area|
|
179
|
+
area.to_s
|
180
|
+
end
|
181
|
+
else
|
182
|
+
"\n***** Block *****"+
|
183
|
+
"\nIdBlock : "+ no_null(@idBlock)+
|
184
|
+
"\nIdScreen : "+ no_null(@idScreen) +
|
185
|
+
"\nTitle : "+ no_null(@title)+
|
186
|
+
"\nCollapsible :"+ bool_no_null(@collapsible.to_s)+
|
187
|
+
"\nCollapsed :"+ bool_no_null(@collapsed.to_s)+
|
188
|
+
"\nVisible : "+ bool_no_null(@visible.to_s)+
|
189
|
+
"\nExists : "+ bool_no_null(@exists.to_s)+
|
190
|
+
"\nHasMultipleAreas :"+ bool_no_null(@hasMultipleAreas.to_s)+
|
191
|
+
"\nType :"+ no_null(@type.to_s)+
|
192
|
+
"\n**********"
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
|
197
|
+
##LdsScreen Actions
|
198
|
+
def reverse_collapse
|
199
|
+
if (@collapsible)
|
200
|
+
@current_element.div(:index => 0).div(:index => 0).div.when_present.click
|
201
|
+
end
|
202
|
+
update
|
203
|
+
end
|
204
|
+
|
205
|
+
def collapse
|
206
|
+
if (@collapsible && !@collapsed)
|
207
|
+
@current_element.div(:index => 0).div(:index => 0).div.when_present.click
|
208
|
+
end
|
209
|
+
update
|
210
|
+
end
|
211
|
+
|
212
|
+
def expand
|
213
|
+
if (@collapsible && @collapsed)
|
214
|
+
@current_element.div(:index => 0).div(:index => 0).div.when_present.click
|
215
|
+
end
|
216
|
+
update
|
217
|
+
end
|
218
|
+
|
219
|
+
####Getters
|
220
|
+
|
221
|
+
def getElement
|
222
|
+
@current_element
|
223
|
+
end
|
224
|
+
|
225
|
+
def getIdBlock
|
226
|
+
@idBlock
|
227
|
+
end
|
228
|
+
|
229
|
+
def getIdScreen
|
230
|
+
@idScreen
|
231
|
+
end
|
232
|
+
|
233
|
+
def getTitle
|
234
|
+
@title
|
235
|
+
end
|
236
|
+
|
237
|
+
def getAreas
|
238
|
+
@areas
|
239
|
+
end
|
240
|
+
|
241
|
+
def getType
|
242
|
+
@type
|
243
|
+
end
|
244
|
+
|
245
|
+
def hasMultipleAreas?
|
246
|
+
@hasMultipleAreas
|
247
|
+
end
|
248
|
+
|
249
|
+
def isCollapsible?
|
250
|
+
@collapsible
|
251
|
+
end
|
252
|
+
|
253
|
+
def isCollapsed?
|
254
|
+
@collapsed
|
255
|
+
end
|
256
|
+
|
257
|
+
def isVisible?
|
258
|
+
@visible
|
259
|
+
end
|
260
|
+
|
261
|
+
def isExist?
|
262
|
+
@exists
|
263
|
+
end
|
264
|
+
|
265
|
+
#private method list
|
266
|
+
private :update, :extractTitle, :extractType
|
267
|
+
end
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../lib/TNR360/components/dependencies.rb')
|
2
|
+
|
3
|
+
class LdsBlockInSummaryView < LdsBlock
|
4
|
+
#private method to update/save the status of the object
|
5
|
+
def update
|
6
|
+
@exists=false
|
7
|
+
#Look for element in browser
|
8
|
+
@current_element||= findElement @idBlock
|
9
|
+
#fill @title
|
10
|
+
extractTitle
|
11
|
+
#fill type
|
12
|
+
extractType
|
13
|
+
#everything exists
|
14
|
+
@exists=true
|
15
|
+
end
|
16
|
+
|
17
|
+
#method locate current element
|
18
|
+
def findElement idElement
|
19
|
+
@current_element=nil
|
20
|
+
|
21
|
+
#wait for screen to become visible (find screen forcefully)
|
22
|
+
proc=Proc.new { isScreenDisplayed }
|
23
|
+
force_find_element(proc).to_s
|
24
|
+
|
25
|
+
#wait for screen to become visible (find screen forcefully)
|
26
|
+
proc=Proc.new { elementExists?(idElement) }
|
27
|
+
@exists=force_find_element(proc)
|
28
|
+
puts 'Block found = '+@exists.to_s
|
29
|
+
|
30
|
+
if (@browser.divs(:id => idElement).length>1)
|
31
|
+
@browser.divs(:id => idElement).each do |field|
|
32
|
+
if field.visible?
|
33
|
+
@current_element=field
|
34
|
+
break
|
35
|
+
end
|
36
|
+
end
|
37
|
+
else
|
38
|
+
@current_element=@browser.div(:id => idElement).when_present
|
39
|
+
end
|
40
|
+
if @current_element.visible?
|
41
|
+
puts 'block is visible'
|
42
|
+
else
|
43
|
+
puts 'block is NOT visible'
|
44
|
+
end
|
45
|
+
@current_element
|
46
|
+
end
|
47
|
+
|
48
|
+
def elementExists?(idElement)
|
49
|
+
#this method assumes the screen/tab is already loaded
|
50
|
+
oneIsVisible=false
|
51
|
+
#if element not yet available in screen, wait for some time
|
52
|
+
if (!@browser.div(:id => idElement).exists?)
|
53
|
+
@browser.div(:id => idElement).when_present(10)
|
54
|
+
oneIsVisible=true
|
55
|
+
else
|
56
|
+
if (!@browser.div(:id => idElement).visible?)
|
57
|
+
@browser.divs(:id => idElement).each do |field|
|
58
|
+
if field.visible?
|
59
|
+
oneIsVisible=true
|
60
|
+
break
|
61
|
+
end
|
62
|
+
end
|
63
|
+
if !oneIsVisible
|
64
|
+
@browser.div(:id => idElement).when_present(10)
|
65
|
+
oneIsVisible=true
|
66
|
+
end
|
67
|
+
else
|
68
|
+
oneIsVisible=true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
oneIsVisible
|
72
|
+
end
|
73
|
+
#internal methods
|
74
|
+
def extractAreas
|
75
|
+
end
|
76
|
+
def extractTitle
|
77
|
+
@title=@current_element.parent.parent.span.text
|
78
|
+
puts @title
|
79
|
+
end
|
80
|
+
def getLabel idF
|
81
|
+
@label=@current_element.div(:id=>idF).parent.parent.label.text
|
82
|
+
puts @label
|
83
|
+
end
|
84
|
+
|
85
|
+
def getValue idF
|
86
|
+
@value=@current_element.div(:id=>idF).text
|
87
|
+
puts @value
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
|
@@ -0,0 +1,196 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../lib/TNR360/components/dependencies.rb')
|
2
|
+
|
3
|
+
class LdsCheckbox
|
4
|
+
@browser
|
5
|
+
@idField=nil
|
6
|
+
@idBlock=nil
|
7
|
+
@idScreen=nil
|
8
|
+
@exists=false
|
9
|
+
@nature=nil
|
10
|
+
@value=nil
|
11
|
+
@visible=false
|
12
|
+
@editable=false
|
13
|
+
@label=nil
|
14
|
+
@mandatory=false
|
15
|
+
@checked=false
|
16
|
+
@current_element
|
17
|
+
#constructor
|
18
|
+
def initialize(browser,idField,idBlock=nil,idScreen=nil)
|
19
|
+
@browser =browser
|
20
|
+
@idField= idField
|
21
|
+
@idBlock=idBlock
|
22
|
+
@idScreen=idScreen
|
23
|
+
update
|
24
|
+
@exists
|
25
|
+
end
|
26
|
+
|
27
|
+
#refresh object status from browser
|
28
|
+
def refresh
|
29
|
+
#Look for element in browser
|
30
|
+
@current_element= findElement @idField
|
31
|
+
#update other data
|
32
|
+
update
|
33
|
+
@exists
|
34
|
+
end
|
35
|
+
|
36
|
+
#private method to update/save the status of the object
|
37
|
+
def update
|
38
|
+
@exists=false
|
39
|
+
#Look for element in browser
|
40
|
+
@current_element||= findElement @idField
|
41
|
+
#fill label
|
42
|
+
@label=@browser.label(:xpath => "//label[contains(@for,'"+@idField+"')]").when_present.text
|
43
|
+
@checked= @current_element.set?
|
44
|
+
@value=@current_element.set?
|
45
|
+
#fill visible
|
46
|
+
@visible=@current_element.visible?
|
47
|
+
#fill editable
|
48
|
+
@editable=!(@current_element.readonly?)
|
49
|
+
#everything exists
|
50
|
+
@exists=true
|
51
|
+
end
|
52
|
+
|
53
|
+
#method locate current element
|
54
|
+
def findElement idElement
|
55
|
+
|
56
|
+
# @browser.div(:id => idElement).radio(:index => 0)
|
57
|
+
@current_element=nil
|
58
|
+
|
59
|
+
#wait for screen to become visible (find screen forcefully)
|
60
|
+
proc=Proc.new {isScreenDisplayed }
|
61
|
+
puts 'Screen found = '+ force_find_element(proc).to_s
|
62
|
+
|
63
|
+
#wait for screen to become visible (find screen forcefully)
|
64
|
+
proc=Proc.new {elementExists?(idElement) }
|
65
|
+
@exists=force_find_element(proc)
|
66
|
+
puts 'CheckBox found = '+@exists.to_s
|
67
|
+
|
68
|
+
if (@browser.divs(:id => idElement).length>1 && @idBlock!=nil)
|
69
|
+
#utiliser le id bloc
|
70
|
+
@bloc=LdsBlock.new(@browser, @idBlock)
|
71
|
+
@current_element=@bloc.getElement.div(:id => idElement).checkbox(:index => 0).when_present
|
72
|
+
else
|
73
|
+
if (@browser.divs(:id => idElement).length>1)
|
74
|
+
@browser.divs(:id => idElement).each do |field|
|
75
|
+
if field.visible?
|
76
|
+
@current_element=field.checkbox(:index => 0)
|
77
|
+
break
|
78
|
+
end
|
79
|
+
end
|
80
|
+
else
|
81
|
+
@current_element=@browser.div(:id => idElement).checkbox(:index => 0).when_present
|
82
|
+
end
|
83
|
+
end
|
84
|
+
if @current_element.visible?
|
85
|
+
puts 'element is visible'
|
86
|
+
else
|
87
|
+
puts 'element is NOT visible'
|
88
|
+
end
|
89
|
+
@current_element
|
90
|
+
end
|
91
|
+
|
92
|
+
def elementExists?(idElement)
|
93
|
+
#this method assumes the screen/tab is already loaded
|
94
|
+
oneIsVisible=false
|
95
|
+
#if element not yet available in screen, wait for some time
|
96
|
+
if (!@browser.div(:id => idElement).checkbox(:index => 0).exists?)
|
97
|
+
@browser.div(:id => idElement).checkbox(:index => 0).when_present(10)
|
98
|
+
oneIsVisible=true
|
99
|
+
else
|
100
|
+
if (!@browser.divs(:id => idElement).visible?)
|
101
|
+
@browser.div(:id => idElement).each do |field|
|
102
|
+
if field.visible?
|
103
|
+
oneIsVisible=true
|
104
|
+
break
|
105
|
+
end
|
106
|
+
end
|
107
|
+
if !oneIsVisible
|
108
|
+
@browser.div(:id => idElement).checkbox(:index => 0).when_present(10)
|
109
|
+
oneIsVisible=true
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
oneIsVisible
|
114
|
+
end
|
115
|
+
|
116
|
+
def isScreenDisplayed
|
117
|
+
if (@idScreen!=nil)
|
118
|
+
@scr=LdsScreen.new(@browser, @idScreen)
|
119
|
+
@scr.isVisible?
|
120
|
+
else
|
121
|
+
false
|
122
|
+
end
|
123
|
+
end
|
124
|
+
#print object
|
125
|
+
def to_s
|
126
|
+
"\n***** CheckBox *****"+
|
127
|
+
"\nId : "+no_null(@idField.to_s) +
|
128
|
+
"\nIdBlock : "+ no_null(@IdBlock.to_s)+
|
129
|
+
"\nIdScreen : "+ no_null(@IdScreen.to_s) +
|
130
|
+
"\nValue : "+ no_null(@value.to_s)+
|
131
|
+
"\nLabel : "+ no_null(@label.to_s)+
|
132
|
+
"\nVisible : "+ no_null(@visible.to_s)+
|
133
|
+
"\nEditable : "+ no_null(@editable.to_s)+
|
134
|
+
"\nExists : "+ no_null(@exists.to_s)+
|
135
|
+
"\nNature : "+ no_null(@nature.to_s)+
|
136
|
+
"\nChecked : "+ no_null(@checked.to_s)+
|
137
|
+
"\n**********"
|
138
|
+
end
|
139
|
+
|
140
|
+
##LdsScreen Actions
|
141
|
+
def check
|
142
|
+
@browser.div(:id => @idField).checkbox(:index => 0).when_present.set
|
143
|
+
@checked=true
|
144
|
+
@exists=true
|
145
|
+
update
|
146
|
+
end
|
147
|
+
|
148
|
+
def uncheck
|
149
|
+
@browser.div(:id => @idField).checkbox(:index => 0).when_present.clear
|
150
|
+
@checked=false
|
151
|
+
@exists=true
|
152
|
+
update
|
153
|
+
end
|
154
|
+
|
155
|
+
|
156
|
+
####Getters
|
157
|
+
|
158
|
+
def getElement
|
159
|
+
@current_element
|
160
|
+
end
|
161
|
+
|
162
|
+
def getIdentifier
|
163
|
+
@idField
|
164
|
+
end
|
165
|
+
def getIdBlock
|
166
|
+
@idBlock
|
167
|
+
end
|
168
|
+
def getIdScreen
|
169
|
+
@idScreen
|
170
|
+
end
|
171
|
+
def isChecked
|
172
|
+
puts @checked
|
173
|
+
end
|
174
|
+
|
175
|
+
def getValue
|
176
|
+
@value
|
177
|
+
end
|
178
|
+
|
179
|
+
def getLabel
|
180
|
+
@label
|
181
|
+
end
|
182
|
+
|
183
|
+
def isVisible?
|
184
|
+
@visible
|
185
|
+
end
|
186
|
+
|
187
|
+
def isEditable?
|
188
|
+
@editable
|
189
|
+
end
|
190
|
+
|
191
|
+
def isExist
|
192
|
+
@exists
|
193
|
+
end
|
194
|
+
#private method list
|
195
|
+
private :update
|
196
|
+
end
|