page-object 0.8.5 → 0.8.6

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.
data/.rvmrc CHANGED
@@ -1,2 +1,2 @@
1
- rvm --create use 1.9.3-p194@page-object
1
+ rvm --create use 1.9.3-p392@page-object
2
2
 
data/ChangeLog CHANGED
@@ -1,3 +1,9 @@
1
+ === Version 0.8.6 / 2013-2-27
2
+ * Enhancements
3
+ * Added support for the svg element
4
+ * Fixes
5
+ * Fixed issue with nested generic element calls
6
+
1
7
  === Version 0.8.5 / 2013-2-21
2
8
  * Enhancements
3
9
  * Updated to use the latest selenium-webdriver 2.30 - support for Firefox 19
@@ -21,4 +21,9 @@ Feature: Generic Elements
21
21
 
22
22
  Scenario: Getting the text from the details element
23
23
  When I get the text from the details
24
- Then the text should be "The summary The details"
24
+ Then the text should be "The summary The details"
25
+
26
+ Scenario: getting properties from a svg element
27
+ When I get the svg element
28
+ Then the svg width should be "100"
29
+ And the svg height should be "100"
@@ -54,6 +54,10 @@
54
54
  Your browser does not support the video tag.
55
55
  </video>
56
56
 
57
+ <svg width="100" height="100" id="the_svg">
58
+ <circle cx="50" cy="50" r="40" fill="red" stroke="blue" stroke-width="5" />
59
+ </svg>
60
+
57
61
  <a href="success.html" id="link_id" name="link_name" class="link_class" title="link_title">Google Search</a>
58
62
 
59
63
  <input id="cb_id" name="cb_name" class="cb_class" type="checkbox" value="1"/>
@@ -17,3 +17,15 @@ end
17
17
  When /^I get the text from the details$/ do
18
18
  @text = @page.details_id
19
19
  end
20
+
21
+ When /^I get the svg element$/ do
22
+ @svg = @page.svg_id_element
23
+ end
24
+
25
+ Then /^the svg width should be "(.*?)"$/ do |width|
26
+ @svg.attribute('width').should == width
27
+ end
28
+
29
+ Then /^the svg height should be "(.*?)"$/ do |height|
30
+ @svg.attribute('height').should == height
31
+ end
@@ -351,5 +351,6 @@ class Page
351
351
  element(:summary_id, :summary, :id => 'summary_id')
352
352
  element(:details_id, :details, :id => 'details_id')
353
353
 
354
+ svg(:svg_id, :id => 'the_svg')
354
355
  end
355
356
 
@@ -1027,6 +1027,30 @@ module PageObject
1027
1027
  end
1028
1028
  end
1029
1029
 
1030
+ #
1031
+ # adds two methods - one to retrieve a svg, and another to check
1032
+ # the svg's existence.
1033
+ #
1034
+ # @example
1035
+ # svg(:circle, :id => 'circle')
1036
+ # # will generate 'circle_element', and 'circle?' methods
1037
+ #
1038
+ # @param [Symbol] the name used for the generated methods
1039
+ # @param [Hash] identifier how we find a svg. You can use a multiple paramaters
1040
+ # by combining of any of the following except xpath. The valid keys are:
1041
+ # * :class => Watir and Selenium
1042
+ # * :css => Selenium only
1043
+ # * :id => Watir and Selenium
1044
+ # * :index => Watir and Selenium
1045
+ # * :name => Watir and Selenium
1046
+ # * :xpath => Watir and Selenium
1047
+ # @param optional block to be invoked when element method is called
1048
+ #
1049
+ def svg(name, identifier={:index => 0}, &block)
1050
+ standard_methods(name, identifier, 'svg_for', &block)
1051
+ end
1052
+
1053
+
1030
1054
  #
1031
1055
  # methods to generate accessors for types that follow the same
1032
1056
  # pattern as element
@@ -32,7 +32,17 @@ module PageObject
32
32
  :canvas,
33
33
  :audio,
34
34
  :video,
35
- :abbr,
35
+ :svg].each do |tag|
36
+ target.send(:define_method, "#{tag.to_s}_element") do |*identifier|
37
+ @platform.send "#{tag.to_s}_for", locator(identifier)
38
+ end
39
+
40
+ target.send(:define_method, "#{tag.to_s}_elements") do |*identifier|
41
+ @platform.send("#{tag.to_s}s_for", identifier[0] ? identifier[0] : {})
42
+ end
43
+ end
44
+
45
+ [:abbr,
36
46
  :address,
37
47
  :article,
38
48
  :aside,
@@ -64,11 +74,11 @@ module PageObject
64
74
  :var,
65
75
  :wbr].each do |tag|
66
76
  target.send(:define_method, "#{tag.to_s}_element") do |*identifier|
67
- @platform.send "#{tag.to_s}_for", locator(identifier)
77
+ @platform.send :element_for, locator(identifier)
68
78
  end
69
79
 
70
80
  target.send(:define_method, "#{tag.to_s}_elements") do |*identifier|
71
- @platform.send("#{tag.to_s}s_for", identifier[0] ? identifier[0] : {})
81
+ @platform.send(:elements_for, identifier[0] ? identifier[0] : {})
72
82
  end
73
83
  end
74
84
  end
@@ -988,6 +988,20 @@ module PageObject
988
988
  find_selenium_elements(identifier, Elements::Element, tag.to_s)
989
989
  end
990
990
 
991
+ #
992
+ # platform method to return a svg element
993
+ #
994
+ def svg_for(identifier)
995
+ find_selenium_element(identifier, Elements::Element, 'svg')
996
+ end
997
+
998
+ #
999
+ # platform method to return an array of svg elements
1000
+ #
1001
+ def svgs_for(identifier)
1002
+ find_selenium_elements(identifier, Elements::Element, 'svg')
1003
+ end
1004
+
991
1005
  private
992
1006
 
993
1007
  def process_selenium_call(identifier, type, tag, other=nil)
@@ -277,7 +277,7 @@ module PageObject
277
277
  # See PageObject::Accessors#select_list
278
278
  #
279
279
  def select_list_value_for(identifier)
280
- process_watir_call("select_list(identifier).options.each {|o| return o.text if o.selected?}",
280
+ process_watir_call("select_list(identifier).options.find {|o| o.selected?}.text",
281
281
  Elements::SelectList, identifier)
282
282
  end
283
283
 
@@ -901,16 +901,34 @@ module PageObject
901
901
 
902
902
  #
903
903
  # platform method to return a PageObject::Elements::Element element
904
- # See PageObject::Accessors#elem
904
+ # See PageObject::Accessors#element
905
905
  #
906
906
  def element_for(tag, identifier)
907
907
  find_watir_element("#{tag.to_s}(identifier)", Elements::Element, identifier, tag.to_s)
908
908
  end
909
909
 
910
+ #
911
+ # platform method to return an array of PageObject::Elements::Element elements
912
+ # See PageObject::Accessors#element
913
+ #
910
914
  def elements_for(tag, identifier)
911
915
  find_watir_elements("#{tag.to_s}s(identifier)", Elements::Element, identifier, tag.to_s)
912
916
  end
913
917
 
918
+ #
919
+ # platform method to return a svg element
920
+ #
921
+ def svg_for(identifier)
922
+ find_watir_element("element(identifier)", Elements::Element, identifier)
923
+ end
924
+
925
+ #
926
+ # platform method to return an array of svg elements
927
+ #
928
+ def svgs_for(identifier)
929
+ find_watir_elements("element(identifier)", Elements::Element, identifier)
930
+ end
931
+
914
932
  private
915
933
 
916
934
  def find_watir_elements(the_call, type, identifier, tag_name=nil)
@@ -1,4 +1,4 @@
1
1
  module PageObject
2
2
  # @private
3
- VERSION = "0.8.5"
3
+ VERSION = "0.8.6"
4
4
  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.8.5
4
+ version: 0.8.6
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: 2013-02-21 00:00:00.000000000 Z
12
+ date: 2013-02-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: watir-webdriver
@@ -397,7 +397,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
397
397
  version: '0'
398
398
  segments:
399
399
  - 0
400
- hash: 2605320443104154235
400
+ hash: -3437791365044287985
401
401
  required_rubygems_version: !ruby/object:Gem::Requirement
402
402
  none: false
403
403
  requirements:
@@ -406,10 +406,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
406
406
  version: '0'
407
407
  segments:
408
408
  - 0
409
- hash: 2605320443104154235
409
+ hash: -3437791365044287985
410
410
  requirements: []
411
411
  rubyforge_project: page-object
412
- rubygems_version: 1.8.24
412
+ rubygems_version: 1.8.25
413
413
  signing_key:
414
414
  specification_version: 3
415
415
  summary: Page Object DSL for browser testing