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,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
+