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,46 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../../lib/TNR360/components/dependencies.rb')
2
+
3
+ class LdsSummaryView < LdsScreen
4
+ @type=nil
5
+ @title=nil
6
+
7
+ def initialize(browser, idScreen)
8
+ @browser =browser
9
+ @idScreen=idScreen
10
+ @type='summary'
11
+ update
12
+ @exists
13
+ end
14
+
15
+ def extractType
16
+ puts "Screen Type: "+self.to_s
17
+ end
18
+ def update
19
+ @exists=false
20
+ #Look for element in browser
21
+ @current_element||= findElement @idScreen
22
+ #fill @title
23
+ extractTitle
24
+ extractSubTabs @idScreen
25
+ #fill type
26
+ extractType
27
+ #everything exists
28
+ @exists=true
29
+ end
30
+ def extractTitle
31
+ end
32
+ def click
33
+ end
34
+ def closeTab
35
+ end
36
+ def clickSetting
37
+ end
38
+ def closeRootTab
39
+ end
40
+ def clickYesNo
41
+ end
42
+ end
43
+
44
+
45
+
46
+
@@ -0,0 +1,203 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../../lib/TNR360/components/dependencies.rb')
2
+
3
+
4
+ class LdsTextField
5
+
6
+ @browser
7
+ @idField=nil
8
+ @idBlock=nil
9
+ @idScreen=nil
10
+ @value=nil
11
+ @label=nil
12
+ @mandatory=false
13
+ @visible=false
14
+ @editable=false
15
+ @exists=false
16
+
17
+ @current_element
18
+
19
+
20
+ #constructor
21
+ def initialize(browser, idField, idBlock=nil, idScreen=nil)
22
+ @browser =browser
23
+ @idField= idField
24
+ @idBlock=idBlock
25
+ @idScreen=idScreen
26
+ update
27
+ @exists
28
+ end
29
+
30
+ #refresh object status from browser
31
+ def refresh
32
+ #Look for element in browser
33
+ @current_element= findElement @idField
34
+ #update other data
35
+ update
36
+ @exists
37
+ end
38
+
39
+ #private method to update/save the status of the object
40
+ def update
41
+ @exists=false
42
+
43
+ #Look for element in browser
44
+ @current_element||= findElement @idField
45
+ #fill value
46
+ @value=@current_element.value
47
+ #fill label
48
+ @label=@current_element.name
49
+ #fill isMandatory #TODO
50
+ ## @mandatory=@browser.label(:for, @idField).when_present.style.include? "bold"
51
+ #fill visible
52
+ @visible=@current_element.visible?
53
+ #fill editable
54
+ @editable=!(@current_element.readonly?)
55
+ #everything exists
56
+ @exists=true
57
+ end
58
+
59
+ #method locate current element
60
+ def findElement idElement
61
+ @current_element=nil
62
+
63
+ #wait for screen to become visible (find screen forcefully)
64
+ proc=Proc.new { isScreenDisplayed }
65
+ puts 'Screen found = '+ force_find_element(proc).to_s
66
+
67
+ #wait for screen to become visible (find screen forcefully)
68
+ proc=Proc.new { elementExists?(idElement) }
69
+ @exists=force_find_element(proc)
70
+ puts 'Element found = '+@exists.to_s
71
+
72
+
73
+ if (@browser.text_fields(:id => idElement).length>1 && @idBlock!=nil)
74
+ #utiliser le id bloc
75
+ @bloc=LdsBlock.new(@browser, @idBlock)
76
+ @current_element=@bloc.getElement.text_field(:id, idElement).when_present
77
+ else
78
+ if (@browser.text_fields(:id => idElement).length>1)
79
+ @browser.text_fields(:id => idElement).each do |field|
80
+ if field.visible?
81
+ @current_element=field
82
+ break
83
+ end
84
+ end
85
+ else
86
+ @current_element=@browser.text_field(:id, idElement).when_present
87
+ end
88
+ end
89
+ if @current_element.visible?
90
+ puts 'element is visible'
91
+ else
92
+ puts 'element is NOT visible'
93
+ end
94
+ @current_element
95
+ end
96
+
97
+
98
+ def isScreenDisplayed
99
+ if (@idScreen!=nil)
100
+ @scr=LdsScreen.new(@browser, @idScreen)
101
+ @scr.isVisible?
102
+ else
103
+ false
104
+ end
105
+ end
106
+
107
+ def elementExists?(idElement)
108
+ #this method assumes the screen/tab is already loaded
109
+ oneIsVisible=false
110
+ #if element not yet available in screen, wait for some time
111
+ if (!@browser.text_field(:id => idElement).exists?)
112
+ @browser.text_field(:id => idElement).when_present($wait_time.to_i)
113
+ oneIsVisible=true
114
+ else
115
+ if (!@browser.text_field(:id => idElement).visible?)
116
+ @browser.text_fields(:id => idElement).each do |field|
117
+ if field.visible?
118
+ oneIsVisible=true
119
+ break
120
+ end
121
+ end
122
+ if !oneIsVisible
123
+ @browser.text_field(:id => idElement).when_present($wait_time.to_i)
124
+ oneIsVisible=true
125
+ end
126
+ else
127
+ oneIsVisible=true
128
+ end
129
+ end
130
+ oneIsVisible
131
+ end
132
+
133
+ #print object
134
+ def to_s
135
+ "\n***** Text_Field *****"+
136
+ "\nId : "+no_null(@idField) +
137
+ "\nIdBlock : "+ no_null(@IdBlock)+
138
+ "\nIdScreen : "+ no_null(@IdScreen) +
139
+ "\nValue : "+ no_null(@value)+
140
+ "\nLabel : "+ no_null(@label)+
141
+ "\nMandatory : "+ no_null(@mandatory.to_s)+
142
+ "\nVisible : "+ no_null(@visible.to_s)+
143
+ "\nEditable : "+ no_null(@editable.to_s)+
144
+ "\nExists : "+ no_null(@exists.to_s)+
145
+ "\n**********"
146
+ end
147
+
148
+
149
+ ##LdsScreen Actions
150
+ def fill (value)
151
+ @browser.text_field(:id => @idField).when_present.set(value)
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
+
166
+ def getIdBlock
167
+ @idBlock
168
+ end
169
+
170
+ def getIdScreen
171
+ @idScreen
172
+ end
173
+
174
+ def getValue
175
+ @value
176
+ end
177
+
178
+ def getLabel
179
+ @label
180
+ end
181
+
182
+ def isMandatory?
183
+ @mandatory
184
+ end
185
+
186
+ def isVisible?
187
+ @visible
188
+ end
189
+
190
+ def isEditable?
191
+ @editable
192
+ end
193
+
194
+ def isExist?
195
+ @exists
196
+ end
197
+
198
+ #private method list
199
+ private :update, :elementExists?
200
+ end
201
+
202
+
203
+
@@ -0,0 +1,234 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../../lib/TNR360/components/dependencies.rb')
2
+
3
+ class LdsVue360
4
+
5
+ @browser
6
+ @idScreen=nil
7
+ @title=nil
8
+ @visible=false
9
+ @exists=false
10
+ @type=nil
11
+ @isRootTab=true
12
+
13
+ @parentRootTab=nil
14
+ @rootTitle=nil
15
+ @current_element
16
+
17
+
18
+ #constructor
19
+ def initialize(browser, idNode)
20
+ @browser =browser
21
+ @idNode=idNode
22
+ update
23
+ @exists
24
+ end
25
+
26
+
27
+ #refresh object status from browser
28
+ def refresh
29
+ #Look for element in browser
30
+ @current_element= findElement @idNode
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
+
40
+ #Look for element in browser
41
+ @current_element||= findElement @idScreen
42
+ #fill @title
43
+ extractTitle
44
+ #fill visible
45
+ @visible=@current_element.visible?
46
+
47
+ #deal with subtabs
48
+ @isRootTab=!@current_element.id.to_s.include?('functionTab')
49
+ extractSubTabs @idScreen
50
+
51
+ #fill type
52
+ extractType
53
+ #everything exists
54
+ @exists=true
55
+ end
56
+
57
+
58
+ #internal methods
59
+ def extractType
60
+
61
+ end
62
+
63
+
64
+ def extractTitle
65
+ @title=@current_element.text
66
+ end
67
+
68
+ def extractSubTabs idElement
69
+ if (!@isRootTab)
70
+ ind=0
71
+
72
+ #find parent of current element that holds all frame contents of the tab
73
+ element, previousElement = findParentWithClass "x-tab-panel-body x-tab-panel-body-top",@current_element
74
+
75
+ #find the correct order of this frame, in order to identify the order of the tab
76
+ element.divs(:xpath =>'*').each do |adiv|
77
+ if(adiv.class_name==previousElement.class_name)
78
+ break;
79
+ end
80
+ ind=ind+1
81
+ end
82
+
83
+ #now that we have the order, navigate through root tabs, and find the one with the same order ind
84
+ @browser.divs(:xpath =>'//div[contains(@class,"x-tab-panel-header")]').each do |divr|
85
+ if(!(divr.li.id.start_with? 'GLOBALMENU') && !(divr.li.id.start_with? 'functionTab'))
86
+ @parentRootTab=divr.li(:index => ind)
87
+ break
88
+ end
89
+ end
90
+
91
+ #get the title of that root tab
92
+ @rootTitle=@parentRootTab.text
93
+ end
94
+ end
95
+
96
+
97
+
98
+
99
+ #method locate current element
100
+ def findElement idElement
101
+ @isRootTab=true
102
+ @parentRootTab=nil
103
+ @rootTitle=nil
104
+ #wait for screen to become visible (find screen forcefully)
105
+ proc=Proc.new { elementExists?(idElement) }
106
+ found=@exists=force_find_element(proc)
107
+
108
+ #show proof
109
+ puts 'Tab Element ' +idElement+' found = '+@exists.to_s
110
+
111
+ @current_element=@browser.li(:xpath => "//li[contains(@id,'"+idElement+"')]").when_present($wait_time.to_i)
112
+ @current_element
113
+ end
114
+
115
+
116
+ def elementExists?(idElement)
117
+ #this method assumes the screen/tab is already loaded
118
+ oneIsThere=false
119
+ #if element not yet available in screen, wait for some time
120
+ if (!@browser.li(:xpath => "//li[contains(@id,'"+idElement+"')]").exists?)
121
+ @browser.li(:xpath => "//li[contains(@id,'"+idElement+"')]").when_present($wait_time.to_i)
122
+ oneIsThere=true
123
+ else
124
+ oneIsThere=true
125
+ end
126
+ oneIsThere
127
+ end
128
+
129
+
130
+ #print object
131
+ def to_s
132
+ "\n***** Screen *****"+
133
+ "\nIdScreen : "+ no_null(@idScreen) +
134
+ "\nTitle : "+ no_null(@title)+
135
+ "\nVisible : "+ bool_no_null(@visible.to_s)+
136
+ "\nExists : "+ bool_no_null(@exists.to_s)+
137
+ "\nType :"+ no_null(@type.to_s)+
138
+ "\nIsRootTab : "+ bool_no_null(@isRootTab.to_s)+
139
+ "\nRootTitle : "+ ((no_null(@rootTitle.to_s)=='')?(@title.to_s):(@rootTitle.to_s))+
140
+ "\nType :"+ no_null(@type.to_s)+
141
+ "\n**********"
142
+ end
143
+
144
+
145
+ ##LdsScreen Actions
146
+ def click
147
+ success=false
148
+ if(@current_element.present? && @current_element.visible?)
149
+ @current_element.click
150
+ sleep($small_wait_time)
151
+ #wait for screen to become visible
152
+ proc=Proc.new { @current_element.visible? }
153
+ success=@exists=force_find_element(proc)
154
+
155
+ else
156
+ if(@parentRootTab!=nil && @parentRootTab.present?)
157
+ @parentRootTab.click
158
+ #wait for screen to become visible
159
+ proc=Proc.new { @current_element.visible? }
160
+ success=@exists=force_find_element(proc)
161
+ @current_element.click
162
+ success=@current_element.visible?
163
+ end
164
+ end
165
+ success
166
+ end
167
+
168
+ def closeTab
169
+ @current_element.a(:class => 'x-tab-strip-close').click
170
+ if(!@isRootTab)
171
+ @parentRootTab.a(:class => 'x-tab-strip-close').click
172
+ end
173
+ done=false
174
+ #make sure screen closed : Trigger Action => any action on it throws a not found error
175
+ begin
176
+ update
177
+ rescue
178
+ done=true
179
+ ensure
180
+ done
181
+ end
182
+ end
183
+
184
+ def closeRootTab
185
+ @current_element.a(:class => 'x-tab-strip-close').click
186
+ if(!@isRootTab)
187
+ @parentRootTab.a(:class => 'x-tab-strip-close').click
188
+ end
189
+ done=false
190
+ #make sure screen closed : Trigger Action => any action on it throws a not found error
191
+ begin
192
+ update
193
+ rescue
194
+ done=true
195
+ ensure
196
+ done
197
+ end
198
+ end
199
+
200
+ ####Getters
201
+ def getElement
202
+ @current_element
203
+ end
204
+
205
+ def getIdScreen
206
+ @idScreen
207
+ end
208
+
209
+ def getTitle
210
+ @title
211
+ end
212
+
213
+ def getRootTitle
214
+ @rootTitle
215
+ end
216
+ def getType
217
+ @type
218
+ end
219
+
220
+ def isVisible?
221
+ @visible
222
+ end
223
+
224
+ def isExist?
225
+ @exists
226
+ end
227
+
228
+ #private method list
229
+ private :update, :extractTitle, :extractType , :elementExists? , :findElement , :extractSubTabs
230
+ end
231
+
232
+
233
+
234
+