druid-ts 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +6 -7
  3. data/Gemfile +0 -5
  4. data/druid.gemspec +2 -1
  5. data/features/area.feature +0 -1
  6. data/features/audio.feature +0 -2
  7. data/features/bold.feature +0 -1
  8. data/features/canvas.feature +0 -2
  9. data/features/div.feature +0 -2
  10. data/features/heading.feature +0 -10
  11. data/features/italic.feature +0 -1
  12. data/features/label.feature +0 -2
  13. data/features/link.feature +0 -2
  14. data/features/list_item.feature +0 -2
  15. data/features/ordered_list.feature +0 -2
  16. data/features/paragraph.feature +0 -2
  17. data/features/span.feature +0 -2
  18. data/features/step_definations/element_steps.rb +2 -2
  19. data/features/step_definations/section_steps.rb +1 -1
  20. data/features/table.feature +0 -2
  21. data/features/table_cell.feature +0 -2
  22. data/features/unordered_list.feature +0 -3
  23. data/features/video.feature +0 -11
  24. data/lib/druid.rb +1 -5
  25. data/lib/druid/accessors.rb +2 -296
  26. data/lib/druid/assist.rb +1 -9
  27. data/lib/druid/elements/button.rb +0 -4
  28. data/lib/druid/elements/check_box.rb +0 -4
  29. data/lib/druid/elements/div.rb +0 -3
  30. data/lib/druid/elements/element.rb +3 -266
  31. data/lib/druid/elements/file_field.rb +0 -3
  32. data/lib/druid/elements/form.rb +0 -9
  33. data/lib/druid/elements/hidden_field.rb +0 -4
  34. data/lib/druid/elements/image.rb +0 -4
  35. data/lib/druid/elements/label.rb +0 -3
  36. data/lib/druid/elements/link.rb +0 -16
  37. data/lib/druid/elements/list_item.rb +0 -4
  38. data/lib/druid/elements/option.rb +0 -6
  39. data/lib/druid/elements/ordered_list.rb +0 -4
  40. data/lib/druid/elements/radio_button.rb +0 -3
  41. data/lib/druid/elements/select_list.rb +0 -26
  42. data/lib/druid/elements/span.rb +0 -4
  43. data/lib/druid/elements/table_cell.rb +0 -3
  44. data/lib/druid/elements/table_row.rb +4 -0
  45. data/lib/druid/elements/text_area.rb +0 -17
  46. data/lib/druid/elements/text_field.rb +0 -7
  47. data/lib/druid/elements/unordered_list.rb +0 -4
  48. data/lib/druid/page_populator.rb +15 -0
  49. data/lib/druid/version.rb +1 -1
  50. data/spec/druid/druid_spec.rb +1 -21
  51. data/spec/druid/elements/area_spec.rb +0 -8
  52. data/spec/druid/elements/bold_spec.rb +0 -9
  53. data/spec/druid/elements/button_spec.rb +0 -8
  54. data/spec/druid/elements/canvas_spec.rb +0 -9
  55. data/spec/druid/elements/check_box_spec.rb +0 -9
  56. data/spec/druid/elements/div_spec.rb +0 -9
  57. data/spec/druid/elements/element_spec.rb +6 -18
  58. data/spec/druid/elements/file_field_spec.rb +0 -9
  59. data/spec/druid/elements/form_spec.rb +0 -9
  60. data/spec/druid/elements/heading_spec.rb +0 -9
  61. data/spec/druid/elements/hidden_field_spec.rb +0 -9
  62. data/spec/druid/elements/image_spec.rb +0 -9
  63. data/spec/druid/elements/itatic_spec.rb +1 -10
  64. data/spec/druid/elements/label_spec.rb +0 -9
  65. data/spec/druid/elements/link_spec.rb +0 -16
  66. data/spec/druid/elements/list_item_spec.rb +0 -9
  67. data/spec/druid/elements/ordered_list_spec.rb +0 -9
  68. data/spec/druid/elements/paragraph_spec.rb +0 -9
  69. data/spec/druid/elements/radio_button_spec.rb +0 -9
  70. data/spec/druid/elements/select_list_spec.rb +0 -9
  71. data/spec/druid/elements/span_spec.rb +0 -9
  72. data/spec/druid/elements/table_cell_spec.rb +0 -9
  73. data/spec/druid/elements/table_row_spec.rb +0 -8
  74. data/spec/druid/elements/table_spec.rb +0 -9
  75. data/spec/druid/elements/text_area_spec.rb +0 -9
  76. data/spec/druid/elements/text_field_spec.rb +0 -9
  77. data/spec/druid/elements/unordered_list_spec.rb +0 -9
  78. data/spec/druid/page_populator_spec.rb +5 -3
  79. metadata +15 -15
@@ -188,7 +188,7 @@ module Druid
188
188
  # method to retrieve load status of an image element
189
189
  #
190
190
  def image_loaded_for(identifier)
191
- process_call("image(identifier).loaded?", Elements::Image, identifier)
191
+ process_call("image(identifier).loaded?", Elements::Image, identifier)
192
192
  end
193
193
 
194
194
  def form_for identifier
@@ -619,16 +619,8 @@ module Druid
619
619
  value
620
620
  end
621
621
 
622
- def add_tagname_if_needed identifier, tag
623
- return identifier if identifier.length < 2 and not identifier[:name]
624
- identifier[:tag_name] = tag if identifier[:name]
625
- identifier
626
- end
627
-
628
622
  def parse_identifiers(identifier, element, tag_name=nil)
629
623
  frame_identifiers = identifier.delete(:frame)
630
- identifier = add_tagname_if_needed identifier, tag_name if tag_name
631
- identifier = element.identifier_for identifier
632
624
  return identifier, frame_identifiers
633
625
  end
634
626
 
@@ -2,10 +2,6 @@ module Druid
2
2
  module Elements
3
3
  class Button < Element
4
4
 
5
- def self.finders
6
- super + [:value, :text, :src, :alt, :css]
7
- end
8
-
9
5
  end
10
6
 
11
7
  Druid::Elements.type_to_class[:submit] = Druid::Elements::Button
@@ -2,10 +2,6 @@ module Druid
2
2
  module Elements
3
3
  class CheckBox < Element
4
4
 
5
- def self.finders
6
- super + [:value, :label]
7
- end
8
-
9
5
  #
10
6
  # Check the checkbox
11
7
  #
@@ -2,9 +2,6 @@ module Druid
2
2
  module Elements
3
3
  class Div < Element
4
4
 
5
- def self.finders
6
- super + [:text, :title]
7
- end
8
5
  end
9
6
 
10
7
  Druid::Elements.tag_to_class[:div] = Druid::Elements::Div
@@ -18,72 +18,12 @@ module Druid
18
18
  @driver = @element
19
19
  end
20
20
 
21
- #
22
- # Get the text for the element
23
- #
24
- # @return [String]
25
- #
26
- def text
27
- element.text
28
- end
29
-
30
- def exist?
31
- element.exist?
32
- end
33
-
34
- def enabled?
35
- element.enabled?
36
- end
37
-
38
21
  #
39
22
  # return true if the element is not enabled
40
23
  def disabled?
41
24
  not enabled?
42
25
  end
43
26
 
44
- def visible?
45
- element.visible?
46
- end
47
-
48
- #
49
- # return true if the element is stale(no longer attached to the DOM)
50
- #
51
- def stale?
52
- element.stale?
53
- end
54
-
55
- #
56
- # Returns the html for the element
57
- #
58
- # @return [String]
59
- #
60
- def html
61
- element.html
62
- end
63
-
64
- #
65
- # Returns the inner html for the element
66
- #
67
- def outer_html
68
- element.outer_html
69
- end
70
-
71
- #
72
- # Returns the inner html for the element
73
- #
74
- def inner_html
75
- element.inner_html
76
- end
77
-
78
- #
79
- # Get the value of this element
80
- #
81
- # @return [String]
82
- #
83
- def value
84
- element.value
85
- end
86
-
87
27
  #
88
28
  # compare this element to another to determine if they are equal
89
29
  # @return [Boolean]
@@ -92,15 +32,6 @@ module Druid
92
32
  other.is_a? self.class and element == other.element
93
33
  end
94
34
 
95
- #
96
- # Get the tag name of this element
97
- #
98
- # @return [String]
99
- #
100
- def tag_name
101
- element.tag_name
102
- end
103
-
104
35
  #
105
36
  # Get the value of the given attribute of the element
106
37
  # @param [String]
@@ -117,92 +48,10 @@ module Druid
117
48
  element.class_name
118
49
  end
119
50
 
120
- #
121
- # Click this element
122
- #
123
- def click
124
- element.click
125
- end
126
-
127
- #
128
- # get the value of the given CSS property
129
- #
130
- def style(property = nil)
131
- element.style property
132
- end
133
-
134
51
  def inspect
135
52
  element.inspect
136
53
  end
137
54
 
138
- #
139
- # Send keystrokes to this element
140
- #
141
- # @param [String, Symbol, Array]
142
- #
143
- # Examples:
144
- #
145
- # element.send_keys "foo" #=> value: 'foo'
146
- # element.send_keys "tet", :arrow_left, "s" #=> value: 'test'
147
- # element.send_keys [:control, 'a'], :space #=> value: ' '
148
- #
149
- def send_keys(*args)
150
- element.send_keys(*args)
151
- end
152
-
153
- #
154
- # clear the contents of the element
155
- #
156
- def clear
157
- element.clear
158
- end
159
-
160
- #
161
- # double click this element
162
- #
163
- def double_click
164
- element.double_click
165
- end
166
-
167
- #
168
- # right click this element
169
- #
170
- def right_click
171
- element.right_click
172
- end
173
-
174
- #
175
- # Fire the provided event on the current element
176
- #
177
- def fire_event(event_name)
178
- element.fire_event(event_name)
179
- end
180
-
181
- def focus
182
- element.focus
183
- end
184
-
185
- #
186
- # return true if an element is focused
187
- #
188
- def focused?
189
- element.focused?
190
- end
191
-
192
- #
193
- # Select the provided text
194
- #
195
- def select_text text
196
- element.select_text text
197
- end
198
-
199
- #
200
- # get the id of element
201
- #
202
- def id
203
- attribute(:id)
204
- end
205
-
206
55
  #
207
56
  # Scroll until the element is viewable
208
57
  #
@@ -244,19 +93,6 @@ module Druid
244
93
  def centre
245
94
  { 'y' => (location['y'] + (size['height']/2)), 'x' => (location['x'] + (size['width']/2)) }
246
95
  end
247
- #
248
- # Flash the element by temporarily changing the background color
249
- #
250
- def flash
251
- element.flash
252
- end
253
-
254
- #
255
- # hover over the element
256
- #
257
- def hover
258
- element.hover
259
- end
260
96
 
261
97
  def check_visible(timeout=Druid.default_element_wait)
262
98
  timed_loop(timeout) do |element|
@@ -306,6 +142,7 @@ module Druid
306
142
  # @param [Interger] (default to:5) seconds to wait before timing out
307
143
  #
308
144
  def when_visible(timeout=Druid.default_element_wait)
145
+ when_present(timeout)
309
146
  element.wait_until(timeout: timeout, message: "Element not visible in #{timeout} seconds", &:visible?)
310
147
  self
311
148
  end
@@ -316,6 +153,7 @@ module Druid
316
153
  # @param [Integer] (default to:5) seconds to wait before timing out
317
154
  #
318
155
  def when_not_visible(timeout=Druid.default_element_wait)
156
+ when_present(timeout)
319
157
  element.wait_while(timeout: timeout, message: "Element still visible after #{timeout} seconds", &:visible?)
320
158
  self
321
159
  end
@@ -326,25 +164,7 @@ module Druid
326
164
  # @param [Integer] (default to:5) seconds to wait before timing out
327
165
  #
328
166
  def wait_until(timeout=Druid.default_element_wait, message=nil, &block)
329
- Watir::Wait.until(timeout: timeout, message: message, &block)
330
- end
331
-
332
-
333
- # @private
334
- def self.identifier_for identifier
335
- if have_to_build_xpath(identifier)
336
- how = :xpath
337
- what = build_xpath_for(identifier)
338
- return how => what
339
- end
340
- all_identities = {}
341
- identifier.each do |key, value|
342
- each = {key => value}
343
- ident = identifier_for_element each, finders, mapping
344
- all_identities[ident.keys.first] = ident.values.first
345
- end
346
- all_identities
347
- # end
167
+ element.wait_until(timeout: timeout, message: message, &block)
348
168
  end
349
169
 
350
170
  # @private
@@ -354,89 +174,6 @@ module Druid
354
174
  element.send m, *args, &block
355
175
  end
356
176
 
357
- protected
358
-
359
- def self.have_to_build_xpath(identifier)
360
- ['table', 'span', 'div', 'td', 'li', 'ol', 'ul', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'label', 'area', 'canvas', 'audio', 'video', 'b', 'i'].include? identifier[:tag_name] and identifier[:name]
361
- end
362
-
363
- def self.build_xpath_for identifier
364
- tag_locator = identifier.delete(:tag_name)
365
- idx = identifier.delete(:index)
366
- if tag_locator == 'input' and identifier[:type] == 'submit'
367
- identifier.delete(:type)
368
- btn_ident = identifier.clone
369
- if btn_ident[:value]
370
- btn_ident[:text] = btn_ident[:value]
371
- btn_ident.delete(:value)
372
- end
373
- xpath = ".//button"
374
- xpath << "[#{attribute_expression(btn_ident)}]" unless btn_ident.empty?
375
- xpath = "(#{xpath})[#{idx+1}]" if idx
376
- identifier[:type] = %w[button reset submit image]
377
- xpath << " | .//input"
378
- else
379
- xpath = ".//#{tag_locator}"
380
- end
381
- xpath << "[#{attribute_expression(identifier)}]" unless identifier.empty?
382
- xpath = "(#{xpath})[#{idx+1}]" if idx
383
- xpath
384
- end
385
-
386
- def self.attribute_expression(identifier)
387
- identifier.map do |key, value|
388
- if value.kind_of?(Array)
389
- "(" + value.map { |v| equal_pair(key, v) }.join(" or ") + ")"
390
- else
391
- equal_pair(key, value)
392
- end
393
- end.join(" and ")
394
- end
395
-
396
- def self.equal_pair(key, value)
397
- if key == :label
398
- "@id=//label[normalize-space()=#{xpath_string(value)}]/@for"
399
- else
400
- "#{lhs_for(key)}=#{xpath_string(value)}"
401
- end
402
- end
403
-
404
- def self.lhs_for(key)
405
- case key
406
- when :text, 'text'
407
- 'normalize-space()'
408
- when :href
409
- 'normalize-space(@href)'
410
- else
411
- "@#{key.to_s.gsub("_", "-")}"
412
- end
413
- end
414
-
415
- def self.xpath_string(value)
416
- if value.include? "'"
417
- parts = value.split("'", -1).map { |part| "'#{part}'" }
418
- string = parts.join(%{,"'",})
419
- "concat(#{string})"
420
- else
421
- "'#{value}'"
422
- end
423
- end
424
-
425
- def self.identifier_for_element identifier, find_by, find_by_mapping
426
- how, what = identifier.keys.first, identifier.values.first
427
- return how => what if find_by.include? how
428
- return find_by_mapping[how] => what if find_by_mapping[how]
429
- identifier
430
- end
431
-
432
- def self.finders
433
- [:class, :id, :index, :name, :xpath]
434
- end
435
-
436
- def self.mapping
437
- {}
438
- end
439
-
440
177
  private
441
178
 
442
179
  def timed_loop(timeout)
@@ -1,9 +1,6 @@
1
1
  module Druid
2
2
  module Elements
3
3
  class FileField < Element
4
- def self.finders
5
- super + [:title, :label]
6
- end
7
4
 
8
5
  #
9
6
  # Set the value of the FileField
@@ -2,15 +2,6 @@ module Druid
2
2
  module Elements
3
3
  class Form < Element
4
4
 
5
- def self.finders
6
- super + [:action]
7
- end
8
- #
9
- # Submit the form
10
- #
11
- def submit
12
- element.submit
13
- end
14
5
  end
15
6
 
16
7
  Druid::Elements.tag_to_class[:form] = Druid::Elements::Form
@@ -6,10 +6,6 @@ module Druid
6
6
  raise "click is not available on hidden field element with watir"
7
7
  end
8
8
 
9
- def self.finders
10
- super + [:text, :value]
11
- end
12
-
13
9
  end
14
10
 
15
11
  Druid::Elements.type_to_class[:hidden] = Druid::Elements::HiddenField
@@ -2,10 +2,6 @@ module Druid
2
2
  module Elements
3
3
  class Image < Element
4
4
 
5
- def self.finders
6
- super + [:alt, :src]
7
- end
8
-
9
5
  def width
10
6
  element.width
11
7
  end
@@ -1,9 +1,6 @@
1
1
  module Druid
2
2
  module Elements
3
3
  class Label < Element
4
- def self.finders
5
- super + [:text]
6
- end
7
4
 
8
5
  Druid::Elements.tag_to_class[:label] = Druid::Elements::Label
9
6
  end