page-object 0.7.0 → 0.7.1

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.
@@ -881,6 +881,36 @@ module PageObject
881
881
  platform.file_fields_for(identifier.clone)
882
882
  end
883
883
 
884
+ #
885
+ # Finds an area
886
+ #
887
+ # @param [Hash] identifier how we find an area. You can use a multiple paramaters
888
+ # by combining of any of the following except xpath. It defaults to {:index => 0}
889
+ # which will return the first file field. The valid keys are:
890
+ # * :class => Watir and Selenium
891
+ # * :id => Watir and Selenium
892
+ # * :index => Watir and Selenium
893
+ # * :name => Watir and Selenium
894
+ # * :xpath => Watir and Selenium
895
+ def area_element(identifier={:index => 0})
896
+ platform.area_for(identifier.clone)
897
+ end
898
+
899
+ #
900
+ # Finds all areas that match the provided identifier
901
+ #
902
+ # @param [Hash] identifier how we find an area. You can use a multiple paramaters
903
+ # by combining of any of the following except xpath. It defaults to and empty Hash
904
+ # which will return all file fields. The valid keys are:
905
+ # * :class => Watir and Selenium
906
+ # * :id => Watir and Selenium
907
+ # * :index => Watir and Selenium
908
+ # * :name => Watir and Selenium
909
+ # * :xpath => Watir and Selenium
910
+ def area_elements(identifier={})
911
+ platform.areas_for(identifier.clone)
912
+ end
913
+
884
914
  #
885
915
  # Finds an element
886
916
  #
@@ -50,4 +50,5 @@ require 'page-object/elements/heading'
50
50
  require 'page-object/elements/paragraph'
51
51
  require 'page-object/elements/label'
52
52
  require 'page-object/elements/file_field'
53
+ require 'page-object/elements/area'
53
54
 
@@ -0,0 +1,31 @@
1
+
2
+ module PageObject
3
+ module Elements
4
+ class Area < Element
5
+
6
+ #
7
+ # return the coordinates of the area
8
+ #
9
+ def coords
10
+ attribute(:coords)
11
+ end
12
+
13
+ #
14
+ # return the shape of the area
15
+ #
16
+ def shape
17
+ attribute(:shape)
18
+ end
19
+
20
+ #
21
+ # return the href of the area
22
+ #
23
+ def href
24
+ attribute(:href)
25
+ end
26
+
27
+ end
28
+
29
+ ::PageObject::Elements.type_to_class[:area] = ::PageObject::Elements::Area
30
+ end
31
+ end
@@ -105,7 +105,7 @@ module PageObject
105
105
  protected
106
106
 
107
107
  def self.should_build_watir_xpath identifier
108
- ['table', 'span', 'div', 'td', 'li', 'ul', 'ol', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'label'].include? identifier[:tag_name] and identifier[:name]
108
+ ['table', 'span', 'div', 'td', 'li', 'ul', 'ol', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'label', 'area'].include? identifier[:tag_name] and identifier[:name]
109
109
  end
110
110
 
111
111
  def self.build_xpath_for identifier
@@ -863,6 +863,29 @@ module PageObject
863
863
  find_selenium_elements(identifier, Elements::FileField, 'input', :type => 'file')
864
864
  end
865
865
 
866
+ #
867
+ # platform method to click on an area
868
+ #
869
+ def click_area_for(identifier)
870
+ process_selenium_call(identifier, Elements::Area, 'area') do |how, what|
871
+ @browser.find_element(how, what).click
872
+ end
873
+ end
874
+
875
+ #
876
+ # platform method to retrieve an area element
877
+ #
878
+ def area_for(identifier)
879
+ find_selenium_element(identifier, Elements::Area, 'area')
880
+ end
881
+
882
+ #
883
+ # platform method to return an array of area elements
884
+ #
885
+ def areas_for(identifier)
886
+ find_selenium_elements(identifier, Elements::Area, 'area')
887
+ end
888
+
866
889
  #
867
890
  # platform method to retrieve a generic element
868
891
  # See PageObject::Accessors#element
@@ -804,7 +804,27 @@ module PageObject
804
804
  #
805
805
  def file_fields_for(identifier)
806
806
  find_watir_elements("file_fields(identifier)", Elements::FileField, identifier)
807
-
807
+ end
808
+
809
+ #
810
+ # platform method to click on an area
811
+ #
812
+ def click_area_for(identifier)
813
+ process_watir_call("area(identifier).click", Elements::Area, identifier, nil, 'area')
814
+ end
815
+
816
+ #
817
+ # platform method to retrieve an area element
818
+ #
819
+ def area_for(identifier)
820
+ find_watir_element("area(identifier)", Elements::Area, identifier, 'area')
821
+ end
822
+
823
+ #
824
+ # platform method to retrieve an array of area elements
825
+ #
826
+ def areas_for(identifier)
827
+ find_watir_elements("areas(identifier)", Elements::Area, identifier, 'area')
808
828
  end
809
829
 
810
830
  #
@@ -1,4 +1,4 @@
1
1
  module PageObject
2
2
  # @private
3
- VERSION = "0.7.0"
3
+ VERSION = "0.7.1"
4
4
  end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+ require 'page-object/elements'
3
+
4
+ describe PageObject::Elements::Area do
5
+ let(:area) { PageObject::Elements::Area }
6
+
7
+ context "when mapping how to find an element" do
8
+ it "should map watir types to same" do
9
+ [:class, :id, :index, :name, :xpath].each do |t|
10
+ identifier = area.watir_identifier_for t => 'value'
11
+ identifier.keys.first.should == t
12
+ end
13
+ end
14
+
15
+ it "should map selenium types to same" do
16
+ [:class, :id, :index, :name, :xpath].each do |t|
17
+ key, value = area.selenium_identifier_for t => 'value'
18
+ key.should == t
19
+ end
20
+ end
21
+ end
22
+
23
+ context "implementation" do
24
+ let(:area_element) { double('area_element') }
25
+
26
+ context "when using selenium" do
27
+ let(:selenium_area) { PageObject::Elements::Area.new(area_element, :platform => :selenium_webdriver) }
28
+
29
+ it "should know its coords" do
30
+ area_element.should_receive(:attribute).with(:coords).and_return("1,2,3,4")
31
+ selenium_area.coords.should == "1,2,3,4"
32
+ end
33
+
34
+ it "should know its shape" do
35
+ area_element.should_receive(:attribute).with(:shape).and_return('circle')
36
+ selenium_area.shape.should == 'circle'
37
+ end
38
+
39
+ it "should know its href" do
40
+ area_element.should_receive(:attribute).with(:href).and_return('twitter.com')
41
+ selenium_area.href.should == 'twitter.com'
42
+ end
43
+ end
44
+ end
45
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page-object
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-30 00:00:00.000000000 Z
12
+ date: 2012-07-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: watir-webdriver
@@ -125,6 +125,7 @@ files:
125
125
  - README.md
126
126
  - Rakefile
127
127
  - cucumber.yml
128
+ - features/area.feature
128
129
  - features/async.feature
129
130
  - features/button.feature
130
131
  - features/check_box.feature
@@ -154,8 +155,11 @@ files:
154
155
  - features/html/nested_frame_2.html
155
156
  - features/html/nested_frame_3.html
156
157
  - features/html/nested_frames.html
158
+ - features/html/planets.gif
157
159
  - features/html/static_elements.html
158
160
  - features/html/success.html
161
+ - features/html/sun.gif
162
+ - features/html/sun.html
159
163
  - features/image.feature
160
164
  - features/indexed_property.feature
161
165
  - features/javascript.feature
@@ -177,6 +181,7 @@ files:
177
181
  - features/select_list.feature
178
182
  - features/span.feature
179
183
  - features/step_definitions/accessor_steps.rb
184
+ - features/step_definitions/area_steps.rb
180
185
  - features/step_definitions/async_steps.rb
181
186
  - features/step_definitions/button_steps.rb
182
187
  - features/step_definitions/check_box_steps.rb
@@ -225,6 +230,7 @@ files:
225
230
  - lib/page-object/core_ext/string.rb
226
231
  - lib/page-object/element_locators.rb
227
232
  - lib/page-object/elements.rb
233
+ - lib/page-object/elements/area.rb
228
234
  - lib/page-object/elements/button.rb
229
235
  - lib/page-object/elements/check_box.rb
230
236
  - lib/page-object/elements/div.rb
@@ -295,6 +301,7 @@ files:
295
301
  - lib/page-object/version.rb
296
302
  - page-object.gemspec
297
303
  - spec/page-object/element_locators_spec.rb
304
+ - spec/page-object/elements/area_spec.rb
298
305
  - spec/page-object/elements/button_spec.rb
299
306
  - spec/page-object/elements/check_box_spec.rb
300
307
  - spec/page-object/elements/div_spec.rb
@@ -347,7 +354,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
347
354
  version: '0'
348
355
  segments:
349
356
  - 0
350
- hash: -1451627293781447713
357
+ hash: -3346417755984147094
351
358
  required_rubygems_version: !ruby/object:Gem::Requirement
352
359
  none: false
353
360
  requirements:
@@ -356,7 +363,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
356
363
  version: '0'
357
364
  segments:
358
365
  - 0
359
- hash: -1451627293781447713
366
+ hash: -3346417755984147094
360
367
  requirements: []
361
368
  rubyforge_project: page-object
362
369
  rubygems_version: 1.8.24
@@ -364,6 +371,7 @@ signing_key:
364
371
  specification_version: 3
365
372
  summary: Page Object DSL for browser testing
366
373
  test_files:
374
+ - features/area.feature
367
375
  - features/async.feature
368
376
  - features/button.feature
369
377
  - features/check_box.feature
@@ -393,8 +401,11 @@ test_files:
393
401
  - features/html/nested_frame_2.html
394
402
  - features/html/nested_frame_3.html
395
403
  - features/html/nested_frames.html
404
+ - features/html/planets.gif
396
405
  - features/html/static_elements.html
397
406
  - features/html/success.html
407
+ - features/html/sun.gif
408
+ - features/html/sun.html
398
409
  - features/image.feature
399
410
  - features/indexed_property.feature
400
411
  - features/javascript.feature
@@ -416,6 +427,7 @@ test_files:
416
427
  - features/select_list.feature
417
428
  - features/span.feature
418
429
  - features/step_definitions/accessor_steps.rb
430
+ - features/step_definitions/area_steps.rb
419
431
  - features/step_definitions/async_steps.rb
420
432
  - features/step_definitions/button_steps.rb
421
433
  - features/step_definitions/check_box_steps.rb
@@ -460,6 +472,7 @@ test_files:
460
472
  - features/text_field.feature
461
473
  - features/unordered_list.feature
462
474
  - spec/page-object/element_locators_spec.rb
475
+ - spec/page-object/elements/area_spec.rb
463
476
  - spec/page-object/elements/button_spec.rb
464
477
  - spec/page-object/elements/check_box_spec.rb
465
478
  - spec/page-object/elements/div_spec.rb