testcentricity_web 2.1.10 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -139,6 +139,7 @@ module TestCentricity
139
139
  name = device[:name]
140
140
  raise "Device '#{device}' is not defined" unless name
141
141
  Environ.device_os = device[:os]
142
+ Environ.device_type = device[:type]
142
143
  name
143
144
  end
144
145
 
@@ -12,12 +12,19 @@ module TestCentricity
12
12
  @table = table
13
13
  @column = column
14
14
  @element_locator = locator
15
- @locator = "#{@table.get_table_cell_locator('ROW_SPEC', @column)}/#{@element_locator}"
15
+
16
+ set_locator_type(@table.get_locator)
17
+ set_column(column)
16
18
  end
17
19
 
18
20
  def set_column(column)
19
21
  @column = column
20
- @locator = "#{@table.get_table_cell_locator('ROW_SPEC', @column)}/#{@element_locator}"
22
+ case @locator_type
23
+ when :xpath
24
+ @locator = "#{@table.get_table_cell_locator('ROW_SPEC', @column)}/#{@element_locator}"
25
+ when :css
26
+ @locator = "#{@table.get_table_cell_locator('ROW_SPEC', @column)} > #{@element_locator}"
27
+ end
21
28
  end
22
29
 
23
30
  def exists?(row)
@@ -10,6 +10,7 @@ module TestCentricity
10
10
  @alt_locator = nil
11
11
  @proxy = proxy
12
12
  @type = :checkbox
13
+ set_locator_type
13
14
  end
14
15
 
15
16
  # Does checkbox object exists?
@@ -13,6 +13,8 @@ module TestCentricity
13
13
  case element
14
14
  when :list_item
15
15
  @list_item = value
16
+ else
17
+ raise "#{element} is not a recognized list element"
16
18
  end
17
19
  end
18
20
  end
@@ -43,7 +45,12 @@ module TestCentricity
43
45
  end
44
46
 
45
47
  def get_list_row_locator(row)
46
- "#{@locator}/#{@list_item}[#{row}]"
48
+ case @locator_type
49
+ when :xpath
50
+ "#{@locator}/#{@list_item}[#{row}]"
51
+ when :css
52
+ "#{@locator} > #{@list_item}:nth-of-type(#{row})"
53
+ end
47
54
  end
48
55
  end
49
56
  end
@@ -10,9 +10,19 @@ module TestCentricity
10
10
  @alt_locator = nil
11
11
  @list = list
12
12
  @element_locator = locator
13
- locator.nil? ?
14
- @locator = list.get_list_row_locator('ROW_SPEC') :
13
+
14
+ set_locator_type
15
+
16
+ if locator.nil?
17
+ @locator = list.get_list_row_locator('ROW_SPEC')
18
+ else
19
+ case @locator_type
20
+ when :xpath
15
21
  @locator = "#{list.get_list_row_locator('ROW_SPEC')}/#{@element_locator}"
22
+ when :css
23
+ @locator = "#{list.get_list_row_locator('ROW_SPEC')} > #{@element_locator}"
24
+ end
25
+ end
16
26
  end
17
27
 
18
28
  def exists?(row)
@@ -10,6 +10,7 @@ module TestCentricity
10
10
  @alt_locator = nil
11
11
  @proxy = proxy
12
12
  @type = :radio
13
+ set_locator_type
13
14
  end
14
15
 
15
16
  # Does radio button object exists?
@@ -20,6 +20,8 @@ module TestCentricity
20
20
  @list_item = value
21
21
  when :selected_item
22
22
  @selected_item = value
23
+ else
24
+ raise "#{element} is not a recognized selectlist element"
23
25
  end
24
26
  end
25
27
  end
@@ -20,9 +20,16 @@ module TestCentricity
20
20
  :table_column => 'td',
21
21
  :table_header => 'thead',
22
22
  :header_row => 'tr',
23
- :header_column => 'th',
24
- :tree_expand => "div/div[contains(@class, 'tree-plus treeclick')]",
25
- :tree_collapse => "div/div[contains(@class, 'tree-minus treeclick')]" }
23
+ :header_column => 'th' }
24
+
25
+ case @locator_type
26
+ when :xpath
27
+ table_spec[:tree_expand] = "div/div[contains(@class, 'tree-plus treeclick')]"
28
+ table_spec[:tree_collapse] = "div/div[contains(@class, 'tree-minus treeclick')]"
29
+ when :css
30
+ table_spec[:tree_expand] = "div/div[class*='tree-plus treeclick']"
31
+ table_spec[:tree_collapse] = "div/div[class*='tree-minus treeclick']"
32
+ end
26
33
  define_table_elements(table_spec)
27
34
  end
28
35
 
@@ -47,6 +54,8 @@ module TestCentricity
47
54
  @tree_expand = value
48
55
  when :tree_collapse
49
56
  @tree_collapse = value
57
+ else
58
+ raise "#{element} is not a recognized table element"
50
59
  end
51
60
  end
52
61
  end
@@ -59,10 +68,19 @@ module TestCentricity
59
68
  #
60
69
  def get_row_count
61
70
  wait_until_exists(5)
62
- if @table_section.nil?
63
- page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_row}", :visible => :all).count
64
- else
65
- page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_section}", :visible => :all).count
71
+ case @locator_type
72
+ when :xpath
73
+ if @table_section.nil?
74
+ page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_row}", :visible => :all).count
75
+ else
76
+ page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_section}", :visible => :all).count
77
+ end
78
+ when :css
79
+ if @table_section.nil?
80
+ page.all(:css, "#{@locator} > #{@table_body} > #{@table_row}", :visible => :all).count
81
+ else
82
+ page.all(:css, "#{@locator} > #{@table_body} > #{@table_section}", :visible => :all).count
83
+ end
66
84
  end
67
85
  end
68
86
 
@@ -74,17 +92,34 @@ module TestCentricity
74
92
  #
75
93
  def get_column_count
76
94
  row_count = get_row_count
77
- if row_count == 0
78
- page.all(:xpath, "#{@locator}/#{@table_header}/#{@header_row}/#{@header_column}", :visible => :all).count
79
- else
80
- if @table_section.nil?
81
- row_count == 1 ?
82
- page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_row}/#{@table_column}", :visible => :all).count :
83
- page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_row}[2]/#{@table_column}", :visible => :all).count
95
+ case @locator_type
96
+ when :xpath
97
+ if row_count == 0
98
+ page.all(:xpath, "#{@locator}/#{@table_header}/#{@header_row}/#{@header_column}", :visible => :all).count
99
+ else
100
+ if @table_section.nil?
101
+ row_count == 1 ?
102
+ page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_row}/#{@table_column}", :visible => :all).count :
103
+ page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_row}[2]/#{@table_column}", :visible => :all).count
104
+ else
105
+ row_count == 1 ?
106
+ page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_section}/#{@table_row}/#{@table_column}", :visible => :all).count :
107
+ page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_section}[2]/#{@table_row}/#{@table_column}", :visible => :all).count
108
+ end
109
+ end
110
+ when :css
111
+ if row_count == 0
112
+ page.all(:css, "#{@locator} > #{@table_header} > #{@header_row} > #{@header_column}", :visible => :all).count
84
113
  else
85
- row_count == 1 ?
86
- page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_section}/#{@table_row}/#{@table_column}", :visible => :all).count :
87
- page.all(:xpath, "#{@locator}/#{@table_body}/#{@table_section}[2]/#{@table_row}/#{@table_column}", :visible => :all).count
114
+ if @table_section.nil?
115
+ row_count == 1 ?
116
+ page.all(:css, "#{@locator} > #{@table_body} > #{@table_row} > #{@table_column}", :visible => :all).count :
117
+ page.all(:css, "#{@locator} > #{@table_body} > #{@table_row}:nth-of-type(2) > #{@table_column}", :visible => :all).count
118
+ else
119
+ row_count == 1 ?
120
+ page.all(:css, "#{@locator} > #{@table_body} > #{@table_section} > #{@table_row} > #{@table_column}", :visible => :all).count :
121
+ page.all(:css, "#{@locator} > #{@table_body} > #{@table_section}:nth-of-type(2) > #{@table_row} > #{@table_column}", :visible => :all).count
122
+ end
88
123
  end
89
124
  end
90
125
  end
@@ -154,16 +189,31 @@ module TestCentricity
154
189
  raise "Column #{column} exceeds number of columns (#{column_count}) in table #{object_ref_message}" if column > column_count
155
190
  set_table_cell_locator(row, column)
156
191
  saved_locator = @alt_locator
157
- set_alt_locator("#{@alt_locator}//a")
158
- set_alt_locator("#{saved_locator}//span/a") unless exists?
159
- # if link not present, check for text entry fields and try to dismiss by tabbing out
160
- unless exists?
161
- set_alt_locator("#{saved_locator}//input")
162
- set_alt_locator("#{saved_locator}//textarea") unless exists?
163
- send_keys(:tab) if exists?
164
- set_alt_locator("#{saved_locator}//a")
192
+ case @locator_type
193
+ when :xpath
194
+ set_alt_locator("#{@alt_locator}//a")
165
195
  set_alt_locator("#{saved_locator}//span/a") unless exists?
166
- send_keys(:tab) unless exists?
196
+ # if link not present, check for text entry fields and try to dismiss by tabbing out
197
+ unless exists?
198
+ set_alt_locator("#{saved_locator}//input")
199
+ set_alt_locator("#{saved_locator}//textarea") unless exists?
200
+ send_keys(:tab) if exists?
201
+ set_alt_locator("#{saved_locator}//a")
202
+ set_alt_locator("#{saved_locator}//span/a") unless exists?
203
+ send_keys(:tab) unless exists?
204
+ end
205
+ when :css
206
+ set_alt_locator("#{@alt_locator} a")
207
+ set_alt_locator("#{saved_locator} span > a") unless exists?
208
+ # if link not present, check for text entry fields and try to dismiss by tabbing out
209
+ unless exists?
210
+ set_alt_locator("#{saved_locator} input")
211
+ set_alt_locator("#{saved_locator} textarea") unless exists?
212
+ send_keys(:tab) if exists?
213
+ set_alt_locator("#{saved_locator} a")
214
+ set_alt_locator("#{saved_locator} span > a") unless exists?
215
+ send_keys(:tab) unless exists?
216
+ end
167
217
  end
168
218
  wait_until_exists(1)
169
219
  click
@@ -179,10 +229,19 @@ module TestCentricity
179
229
  value = ''
180
230
  set_table_cell_locator(row, column)
181
231
  saved_locator = @alt_locator
182
- set_alt_locator("#{saved_locator}//input")
183
- unless exists?
184
- set_alt_locator("#{saved_locator}//textarea")
185
- set_alt_locator(saved_locator) unless exists?
232
+ case @locator_type
233
+ when :xpath
234
+ set_alt_locator("#{saved_locator}//input")
235
+ unless exists?
236
+ set_alt_locator("#{saved_locator}//textarea")
237
+ set_alt_locator(saved_locator) unless exists?
238
+ end
239
+ when :css
240
+ set_alt_locator("#{saved_locator} input")
241
+ unless exists?
242
+ set_alt_locator("#{saved_locator} textarea")
243
+ set_alt_locator(saved_locator) unless exists?
244
+ end
186
245
  end
187
246
  value = get_value if exists?
188
247
  columns.push(value)
@@ -194,9 +253,16 @@ module TestCentricity
194
253
  def get_row_data(row)
195
254
  row_count = get_row_count
196
255
  raise "Row #{row} exceeds number of rows (#{row_count}) in table #{object_ref_message}" if row > row_count
197
- row > 1 ?
198
- set_alt_locator("#{@locator}/#{@table_body}/#{@table_row}[#{row}]") :
199
- set_alt_locator("#{@locator}/#{@table_body}/#{@table_row}")
256
+ case @locator_type
257
+ when :xpath
258
+ row > 1 ?
259
+ set_alt_locator("#{@locator}/#{@table_body}/#{@table_row}[#{row}]") :
260
+ set_alt_locator("#{@locator}/#{@table_body}/#{@table_row}")
261
+ when :css
262
+ row > 1 ?
263
+ set_alt_locator("#{@locator} > #{@table_body} > #{@table_row}:nth-of-type(#{row})") :
264
+ set_alt_locator("#{@locator} > #{@table_body} > #{@table_row}")
265
+ end
200
266
  value = get_value if exists?
201
267
  clear_alt_locator
202
268
  value
@@ -211,10 +277,19 @@ module TestCentricity
211
277
  value = ''
212
278
  set_table_cell_locator(row, column)
213
279
  saved_locator = @alt_locator
214
- set_alt_locator("#{saved_locator}//input")
215
- unless exists?
216
- set_alt_locator("#{saved_locator}//textarea")
217
- set_alt_locator(saved_locator) unless exists?
280
+ case @locator_type
281
+ when :xpath
282
+ set_alt_locator("#{saved_locator}//input")
283
+ unless exists?
284
+ set_alt_locator("#{saved_locator}//textarea")
285
+ set_alt_locator(saved_locator) unless exists?
286
+ end
287
+ when :css
288
+ set_alt_locator("#{saved_locator} input")
289
+ unless exists?
290
+ set_alt_locator("#{saved_locator} textarea")
291
+ set_alt_locator(saved_locator) unless exists?
292
+ end
218
293
  end
219
294
  value = get_value if exists?
220
295
  rows.push(value)
@@ -238,10 +313,19 @@ module TestCentricity
238
313
  raise "Column #{column} exceeds number of columns (#{column_count}) in table #{object_ref_message}" if column > column_count
239
314
  set_table_cell_locator(row, column)
240
315
  saved_locator = @alt_locator
241
- set_alt_locator("#{saved_locator}//input")
242
- unless exists?
243
- set_alt_locator("#{saved_locator}//textarea")
244
- set_alt_locator(saved_locator) unless exists?
316
+ case @locator_type
317
+ when :xpath
318
+ set_alt_locator("#{saved_locator}//input")
319
+ unless exists?
320
+ set_alt_locator("#{saved_locator}//textarea")
321
+ set_alt_locator(saved_locator) unless exists?
322
+ end
323
+ when :css
324
+ set_alt_locator("#{saved_locator} input")
325
+ unless exists?
326
+ set_alt_locator("#{saved_locator} textarea")
327
+ set_alt_locator(saved_locator) unless exists?
328
+ end
245
329
  end
246
330
  if exists?
247
331
  value = get_value
@@ -291,9 +375,16 @@ module TestCentricity
291
375
  def get_row_attribute(row, attrib)
292
376
  row_count = get_row_count
293
377
  raise "Row #{row} exceeds number of rows (#{row_count}) in table #{object_ref_message}" if row > row_count
294
- row > 1 ?
295
- set_alt_locator("#{@locator}/#{@table_body}/#{@table_row}[#{row}]") :
296
- set_alt_locator("#{@locator}/#{@table_body}/#{@table_row}")
378
+ case @locator_type
379
+ when :xpath
380
+ row > 1 ?
381
+ set_alt_locator("#{@locator}/#{@table_body}/#{@table_row}[#{row}]") :
382
+ set_alt_locator("#{@locator}/#{@table_body}/#{@table_row}")
383
+ when :css
384
+ row > 1 ?
385
+ set_alt_locator("#{@locator} > #{@table_body} > #{@table_row}:nth-of-type(#{row})") :
386
+ set_alt_locator("#{@locator} > #{@table_body} > #{@table_row}")
387
+ end
297
388
  result = get_native_attribute(attrib)
298
389
  clear_alt_locator
299
390
  result
@@ -375,7 +466,12 @@ module TestCentricity
375
466
  def click_header_column(column)
376
467
  column_count = get_column_count
377
468
  raise "Column #{column} exceeds number of columns (#{column_count}) in table header #{object_ref_message}" if column > column_count
378
- set_alt_locator("#{@locator}//#{@table_header}/#{@header_row}/#{@header_column}[#{column}]")
469
+ case @locator_type
470
+ when :xpath
471
+ set_alt_locator("#{@locator}//#{@table_header}/#{@header_row}/#{@header_column}[#{column}]")
472
+ when :css
473
+ set_alt_locator("#{@locator} #{@table_header} > #{@header_row} > #{@header_column}:nth-of-type(#{column})")
474
+ end
379
475
  click if exists?
380
476
  clear_alt_locator
381
477
  end
@@ -383,7 +479,12 @@ module TestCentricity
383
479
  def get_header_column(column)
384
480
  column_count = get_column_count
385
481
  raise "Column #{column} exceeds number of columns (#{column_count}) in table header #{object_ref_message}" if column > column_count
386
- set_alt_locator("#{@locator}//#{@table_header}/#{@header_row}/#{@header_column}[#{column}]")
482
+ case @locator_type
483
+ when :xpath
484
+ set_alt_locator("#{@locator}//#{@table_header}/#{@header_row}/#{@header_column}[#{column}]")
485
+ when :css
486
+ set_alt_locator("#{@locator} #{@table_header} > #{@header_row} > #{@header_column}:nth-of-type(#{column})")
487
+ end
387
488
  value = get_value(:all) if exists?(:all)
388
489
  clear_alt_locator
389
490
  value
@@ -393,7 +494,12 @@ module TestCentricity
393
494
  columns = []
394
495
  column_count = get_column_count
395
496
  (1..column_count).each do |column|
396
- set_alt_locator("#{@locator}//#{@table_header}/#{@header_row}/#{@header_column}[#{column}]")
497
+ case @locator_type
498
+ when :xpath
499
+ set_alt_locator("#{@locator}//#{@table_header}/#{@header_row}/#{@header_column}[#{column}]")
500
+ when :css
501
+ set_alt_locator("#{@locator} #{@table_header} > #{@header_row} > #{@header_column}:nth-of-type(#{column})")
502
+ end
397
503
  columns.push(get_value(:all)) if exists?(:all)
398
504
  end
399
505
  clear_alt_locator
@@ -406,7 +512,12 @@ module TestCentricity
406
512
  column_count = get_column_count
407
513
  raise "Column #{column} exceeds number of columns (#{column_count}) in table #{object_ref_message}" if column > column_count
408
514
  set_table_cell_locator(row, column)
409
- set_alt_locator("#{@alt_locator}/#{@tree_expand}")
515
+ case @locator_type
516
+ when :xpath
517
+ set_alt_locator("#{@alt_locator}/#{@tree_expand}")
518
+ when :css
519
+ set_alt_locator("#{@alt_locator} > #{@tree_expand}")
520
+ end
410
521
  expanded = true
411
522
  expanded = false if exists?
412
523
  clear_alt_locator
@@ -416,7 +527,12 @@ module TestCentricity
416
527
  def expand_table_row(row, column)
417
528
  unless is_table_row_expanded?(row, column)
418
529
  set_table_cell_locator(row, column)
419
- set_alt_locator("#{@alt_locator}/#{@tree_expand}")
530
+ case @locator_type
531
+ when :xpath
532
+ set_alt_locator("#{@alt_locator}/#{@tree_expand}")
533
+ when :css
534
+ set_alt_locator("#{@alt_locator} > #{@tree_expand}")
535
+ end
420
536
  click if exists?
421
537
  clear_alt_locator
422
538
  end
@@ -425,7 +541,12 @@ module TestCentricity
425
541
  def collapse_table_row(row, column)
426
542
  if is_table_row_expanded?(row, column)
427
543
  set_table_cell_locator(row, column)
428
- set_alt_locator("#{@alt_locator}/#{@tree_collapse}")
544
+ case @locator_type
545
+ when :xpath
546
+ set_alt_locator("#{@alt_locator}/#{@tree_collapse}")
547
+ when :css
548
+ set_alt_locator("#{@alt_locator} > #{@tree_collapse}")
549
+ end
429
550
  click if exists?
430
551
  clear_alt_locator
431
552
  end
@@ -441,14 +562,26 @@ module TestCentricity
441
562
  end
442
563
 
443
564
  def get_table_cell_locator(row, column)
444
- if @table_section.nil?
445
- row_spec = "#{@locator}/#{@table_body}/#{@table_row}"
446
- row_spec = "#{row_spec}[#{row}]"
447
- else
448
- row_spec = "#{@locator}/#{@table_body}/#{@table_section}"
449
- row_spec = "#{row_spec}[#{row}]/#{@table_row}[1]"
565
+ case @locator_type
566
+ when :xpath
567
+ if @table_section.nil?
568
+ row_spec = "#{@locator}/#{@table_body}/#{@table_row}"
569
+ row_spec = "#{row_spec}[#{row}]"
570
+ else
571
+ row_spec = "#{@locator}/#{@table_body}/#{@table_section}"
572
+ row_spec = "#{row_spec}[#{row}]/#{@table_row}[1]"
573
+ end
574
+ column_spec = "/#{@table_column}[#{column}]"
575
+ when :css
576
+ if @table_section.nil?
577
+ row_spec = "#{@locator} > #{@table_body} > #{@table_row}"
578
+ row_spec = "#{row_spec}:nth-of-type(#{row})"
579
+ else
580
+ row_spec = "#{@locator} > #{@table_body} > #{@table_section}"
581
+ row_spec = "#{row_spec}:nth-of-type(#{row}) > #{@table_row}:nth-of-type(1)"
582
+ end
583
+ column_spec = " > #{@table_column}:nth-of-type(#{column})"
450
584
  end
451
- column_spec = "/#{@table_column}[#{column}]"
452
585
  "#{row_spec}#{column_spec}"
453
586
  end
454
587
 
@@ -466,8 +599,14 @@ module TestCentricity
466
599
  puts "Could not find table cell at #{@alt_locator}"
467
600
  end
468
601
  saved_locator = @alt_locator
469
- set_alt_locator("#{saved_locator}//input")
470
- set_alt_locator("#{saved_locator}//textarea") unless exists?
602
+ case @locator_type
603
+ when :xpath
604
+ set_alt_locator("#{saved_locator}//input")
605
+ set_alt_locator("#{saved_locator}//textarea") unless exists?
606
+ when :css
607
+ set_alt_locator("#{saved_locator} input")
608
+ set_alt_locator("#{saved_locator} textarea") unless exists?
609
+ end
471
610
  end
472
611
  end
473
612
  end