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.
@@ -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