page-object-lds 0.0.12 → 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- 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
|