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