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