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,27 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../lib/TNR360/components/dependencies.rb')
|
2
|
+
class LdsLov < LdsTextField
|
3
|
+
@clicked=false
|
4
|
+
@opened=false
|
5
|
+
#click Lov
|
6
|
+
def click
|
7
|
+
@clicked=false
|
8
|
+
@browser.text_field(:id => @idField).when_present.click
|
9
|
+
@clicked=true
|
10
|
+
puts "Lov clicked " +@clicked.to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
def selectFromLov
|
14
|
+
@browser.select_list(id => @idField).when_present.clear
|
15
|
+
puts @browser.select_list(:id => @idField).when_present.options
|
16
|
+
@browser.select_list(:id => @idField).when_present.select_value('SOCI02 - SA SOCI02').select
|
17
|
+
|
18
|
+
end
|
19
|
+
#click to open Lov
|
20
|
+
def clickToOpenLov
|
21
|
+
@opened=false
|
22
|
+
@current_element.parent.img.when_present.click
|
23
|
+
@opened=true
|
24
|
+
puts "Lov opened " +@opened.to_s
|
25
|
+
end
|
26
|
+
private :update
|
27
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../lib/TNR360/components/dependencies.rb')
|
2
|
+
class LdsMenu
|
3
|
+
@browser
|
4
|
+
@menu_item_text=nil
|
5
|
+
@menuSelected=nil
|
6
|
+
@exists=false
|
7
|
+
@current_element
|
8
|
+
#constructor
|
9
|
+
def initialize(browser,menu_item_text)
|
10
|
+
@browser =browser
|
11
|
+
@menu_item_text=menu_item_text
|
12
|
+
@exists
|
13
|
+
end
|
14
|
+
#print object
|
15
|
+
def to_s
|
16
|
+
"\n***** Menu *****"+
|
17
|
+
"\nMenu item text : "+ bool_no_null(@menu_item_text.to_s)+
|
18
|
+
"\n**********"
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def click
|
23
|
+
menu_path = @menu_item_text.split('/')
|
24
|
+
raise "Provide at least one level of menu item" if (menu_path.length < 1)
|
25
|
+
for i in 0..(menu_path.length-1)
|
26
|
+
puts "Value of local variable is #{i}"
|
27
|
+
case i
|
28
|
+
when 0
|
29
|
+
@browser.div.li(:id => menu_path[i]).when_present.click
|
30
|
+
sleep($small_wait_time)
|
31
|
+
when 1
|
32
|
+
@browser.div.table(:id=> menu_path[i]).button.when_present.click
|
33
|
+
sleep($small_wait_time)
|
34
|
+
when i==menu_path.length-1
|
35
|
+
@browser.a(:text=>menu_path[i]).when_present.click
|
36
|
+
sleep($small_wait_time)
|
37
|
+
else
|
38
|
+
@browser.a(:text=>menu_path[i]).when_present.hover
|
39
|
+
sleep($small_wait_time)
|
40
|
+
if i==menu_path.length-1
|
41
|
+
@browser.a(:text=>menu_path[i]).when_present.click
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
@@ -0,0 +1,195 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../lib/TNR360/components/dependencies.rb')
|
2
|
+
class LdsRadio
|
3
|
+
@browser
|
4
|
+
@idField=nil
|
5
|
+
@idBlock=nil
|
6
|
+
@idScreen=nil
|
7
|
+
@exists=false
|
8
|
+
@value=nil
|
9
|
+
@visible=false
|
10
|
+
@editable=false
|
11
|
+
@label=nil
|
12
|
+
@checked=false
|
13
|
+
@current_element
|
14
|
+
#constructor
|
15
|
+
def initialize(browser,idField,idBlock=nil,idScreen=nil)
|
16
|
+
@browser =browser
|
17
|
+
@idField= idField
|
18
|
+
@idBlock=idBlock
|
19
|
+
@idScreen=idScreen
|
20
|
+
update
|
21
|
+
@exists
|
22
|
+
end
|
23
|
+
|
24
|
+
#refresh object status from browser
|
25
|
+
def refresh
|
26
|
+
#Look for element in browser
|
27
|
+
@current_element= findElement @idField
|
28
|
+
#update other data
|
29
|
+
update
|
30
|
+
@exists
|
31
|
+
end
|
32
|
+
|
33
|
+
#private method to update/save the status of the object
|
34
|
+
def update
|
35
|
+
@exists=false
|
36
|
+
|
37
|
+
#Look for element in browser
|
38
|
+
@current_element||= findElement @idField
|
39
|
+
#fill label
|
40
|
+
@label=@browser.label(:xpath => "//label[contains(@for,'"+@idField+"')]").when_present.text
|
41
|
+
@checked= @current_element.set?
|
42
|
+
@value=@current_element.set?
|
43
|
+
#fill visible
|
44
|
+
@visible=@current_element.visible?
|
45
|
+
#fill editable
|
46
|
+
@editable=!(@current_element.readonly?)
|
47
|
+
#everything exists
|
48
|
+
@exists=true
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
#method locate current element
|
53
|
+
def findElement idElement
|
54
|
+
|
55
|
+
# @browser.div(:id => idElement).radio(:index => 0)
|
56
|
+
@current_element=nil
|
57
|
+
|
58
|
+
#wait for screen to become visible (find screen forcefully)
|
59
|
+
proc=Proc.new {isScreenDisplayed }
|
60
|
+
puts 'Screen found = '+ force_find_element(proc).to_s
|
61
|
+
|
62
|
+
#wait for screen to become visible (find screen forcefully)
|
63
|
+
proc=Proc.new {elementExists?(idElement) }
|
64
|
+
@exists=force_find_element(proc)
|
65
|
+
puts 'Radio found = '+@exists.to_s
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
if (@browser.divs(:id => idElement).length>1 && @idBlock!=nil)
|
70
|
+
#utiliser le id bloc
|
71
|
+
@bloc=LdsBlock.new(@browser, @idBlock)
|
72
|
+
@current_element=@bloc.getElement.div(:id => idElement).radio(:index => 0).when_present
|
73
|
+
else
|
74
|
+
if (@browser.divs(:id => idElement).length>1)
|
75
|
+
@browser.divs(:id => idElement).each do |field|
|
76
|
+
if field.visible?
|
77
|
+
@current_element=field.radio(:index => 0)
|
78
|
+
break
|
79
|
+
end
|
80
|
+
end
|
81
|
+
else
|
82
|
+
@current_element=@browser.div(:id => idElement).radio(:index => 0).when_present
|
83
|
+
end
|
84
|
+
end
|
85
|
+
if @current_element.visible?
|
86
|
+
puts 'element is visible'
|
87
|
+
else
|
88
|
+
puts 'element is NOT visible'
|
89
|
+
end
|
90
|
+
@current_element
|
91
|
+
end
|
92
|
+
|
93
|
+
def elementExists?(idElement)
|
94
|
+
#this method assumes the screen/tab is already loaded
|
95
|
+
oneIsVisible=false
|
96
|
+
#if element not yet available in screen, wait for some time
|
97
|
+
if (!@browser.div(:id => idElement).radio(:index => 0).exists?)
|
98
|
+
@browser.div(:id => idElement).radio(:index => 0).when_present(10)
|
99
|
+
oneIsVisible=true
|
100
|
+
else
|
101
|
+
if (!@browser.divs(:id => idElement).visible?)
|
102
|
+
@browser.div(:id => idElement).each do |field|
|
103
|
+
if field.visible?
|
104
|
+
oneIsVisible=true
|
105
|
+
break
|
106
|
+
end
|
107
|
+
end
|
108
|
+
if !oneIsVisible
|
109
|
+
@browser.div(:id => idElement).radio(:index => 0).when_present(10)
|
110
|
+
oneIsVisible=true
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
oneIsVisible
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
def isScreenDisplayed
|
119
|
+
if (@idScreen!=nil)
|
120
|
+
@scr=LdsScreen.new(@browser, @idScreen)
|
121
|
+
@scr.isVisible?
|
122
|
+
else
|
123
|
+
false
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
#print object
|
128
|
+
def to_s
|
129
|
+
"\n***** Radio *****"+
|
130
|
+
"\nId : "+no_null(@idField.to_s) +
|
131
|
+
"\nIdBlock : "+ no_null(@IdBlock.to_s)+
|
132
|
+
"\nIdScreen : "+ no_null(@IdScreen.to_s) +
|
133
|
+
"\nValue : "+ no_null(@value.to_s)+
|
134
|
+
"\nLabel : "+ no_null(@label.to_s)+
|
135
|
+
"\nVisible : "+ no_null(@visible.to_s)+
|
136
|
+
"\nEditable : "+ no_null( @editable.to_s)+
|
137
|
+
"\nExists : "+ no_null(@exists.to_s)+
|
138
|
+
"\nChecked : "+ no_null(@checked.to_s)+
|
139
|
+
"\n**********"
|
140
|
+
end
|
141
|
+
|
142
|
+
##LdsScreen Actions
|
143
|
+
def check
|
144
|
+
if(@exists)
|
145
|
+
@browser.div(:id => @idField).radio(:index => 0).when_present.set
|
146
|
+
@exists=true
|
147
|
+
update
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
|
152
|
+
####Getters
|
153
|
+
def getElement
|
154
|
+
@current_element
|
155
|
+
end
|
156
|
+
|
157
|
+
def getIdentifier
|
158
|
+
@idField
|
159
|
+
end
|
160
|
+
def getIdBlock
|
161
|
+
@idBlock
|
162
|
+
end
|
163
|
+
def getIdScreen
|
164
|
+
@idScreen
|
165
|
+
end
|
166
|
+
def isChecked
|
167
|
+
puts @checked
|
168
|
+
end
|
169
|
+
|
170
|
+
def getValue
|
171
|
+
@value
|
172
|
+
end
|
173
|
+
|
174
|
+
def getLabel
|
175
|
+
@label
|
176
|
+
end
|
177
|
+
|
178
|
+
def isVisible?
|
179
|
+
@visible
|
180
|
+
end
|
181
|
+
|
182
|
+
def isEditable?
|
183
|
+
@editable
|
184
|
+
end
|
185
|
+
|
186
|
+
def isExist
|
187
|
+
@exists
|
188
|
+
end
|
189
|
+
|
190
|
+
#private method list
|
191
|
+
private :update
|
192
|
+
end
|
193
|
+
|
194
|
+
|
195
|
+
|
@@ -0,0 +1,234 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../../lib/TNR360/components/dependencies.rb')
|
2
|
+
|
3
|
+
class LdsScreen
|
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, idScreen)
|
20
|
+
@browser =browser
|
21
|
+
@idScreen=idScreen
|
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 @idScreen
|
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
|
+
|