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