page-object 0.8.6 → 0.8.6.1

Sign up to get free protection for your applications and to get access to all the features.
data/ChangeLog CHANGED
@@ -1,3 +1,9 @@
1
+ === Version 0.8.6.1 / 2013-3-4
2
+ * Enhancements
3
+ * Added lable locators for checkbox, text area, select list, radio button and file field (Thanks Alex Rodionov)
4
+ * Updated to use the latest selenium-webdriver 2.31.0
5
+ * Updated to use the latest page_navigation 0.7
6
+
1
7
  === Version 0.8.6 / 2013-2-27
2
8
  * Enhancements
3
9
  * Added support for the svg element
@@ -24,6 +24,7 @@ Feature: Check Box
24
24
  | xpath |
25
25
  | index |
26
26
  | value |
27
+ | label |
27
28
 
28
29
  @selenium_only
29
30
  Scenario Outline: Locating check boxes on the page
@@ -47,7 +48,7 @@ Feature: Check Box
47
48
  When I retrieve a check box element
48
49
  Then I should know it exists
49
50
  And I should know it is visible
50
-
51
+
51
52
  Scenario: Finding a check box dynamically
52
53
  When I select the first check box while the script is executing
53
54
  Then I should see that the checkbox exists
@@ -19,6 +19,7 @@ Feature: File Field
19
19
  | xpath |
20
20
  | title |
21
21
  | index |
22
+ | label |
22
23
 
23
24
  @selenium_only
24
25
  Scenario Outline: Locating file fields on the Page
@@ -12,8 +12,10 @@
12
12
  <input id="hidden_field_id" name="hidden_field_name" class="hidden_field_class"
13
13
  size="40" type="hidden" value="12345"/>
14
14
 
15
+ <label for="text_area_id">Text Area</label>
15
16
  <textarea rows="2" cols="20" id="text_area_id" class="text_area_class" name="text_area_name"></textarea>
16
17
 
18
+ <label for="sel_list_id">Select List</label>
17
19
  <select name="sel_list_name" id="sel_list_id" class="sel_list_class">
18
20
  <option value="option1">Test 1</option>
19
21
  <option value="option2">Test 2</option>
@@ -31,7 +33,7 @@
31
33
  <area shape="circle" coords="90,58,3" href="mercur.html"/>
32
34
  <area shape="circle" coords="124,58,8" href="venus.html"/>
33
35
  </map>
34
-
36
+
35
37
  <canvas id="canvas" name="canvas" class="canvas" width="200" height="100"></canvas>
36
38
  <script type="text/javascript">
37
39
  var c=document.getElementById("myCanvas");
@@ -53,15 +55,17 @@
53
55
  <source src="movie.ogg" type="video/ogg" />
54
56
  Your browser does not support the video tag.
55
57
  </video>
56
-
58
+
57
59
  <svg width="100" height="100" id="the_svg">
58
60
  <circle cx="50" cy="50" r="40" fill="red" stroke="blue" stroke-width="5" />
59
- </svg>
61
+ </svg>
60
62
 
61
63
  <a href="success.html" id="link_id" name="link_name" class="link_class" title="link_title">Google Search</a>
62
64
 
65
+ <label for="cb_id">Checkbox</label>
63
66
  <input id="cb_id" name="cb_name" class="cb_class" type="checkbox" value="1"/>
64
67
 
68
+ <label for="milk_id">Radio</label>
65
69
  <input type="radio" id="milk_id" name="milk_name" class="milk_class" value="Milk"> Milk <br/>
66
70
  <input type="radio" id="butter_id" name="butter_name" class="butter_class" value="Butter">Butter
67
71
 
@@ -122,6 +126,7 @@
122
126
  <form id="form_id" class="form_class" name="form_name" action="/">
123
127
  </form>
124
128
 
129
+ <label for="file_field_id">File Field</label>
125
130
  <input type="file" name="file_field_name" id="file_field_id" class="file_field_class" title="file_field_title" />
126
131
 
127
132
  <ul id="ul_id" name="ul_name" class="ul_class">
@@ -25,6 +25,7 @@ Feature: Radio Buttons
25
25
  | xpath |
26
26
  | value |
27
27
  | index |
28
+ | label |
28
29
 
29
30
  @selenium_only
30
31
  Scenario Outline: Locating radio buttons on the Page
@@ -23,6 +23,7 @@ Feature: Select List
23
23
  | name |
24
24
  | xpath |
25
25
  | index |
26
+ | label |
26
27
 
27
28
  @selenium_only
28
29
  Scenario Outline: Locating select lists on the Page using Selenium
@@ -75,7 +76,7 @@ Feature: Select List
75
76
  Scenario: Selecting an option by its value
76
77
  When I select an option using the value "option2"
77
78
  Then the selected option should be "Test 2"
78
-
79
+
79
80
  Scenario: Getting the value from a selected option
80
81
  When I select an option using the value "option2"
81
82
  Then the selected option should have a value of "option2"
@@ -34,6 +34,7 @@ class Page
34
34
  text_area(:text_area_value, :value => "")
35
35
  text_area(:text_area_class_index, :class => "text_area_class", :index => 0)
36
36
  text_area(:text_area_name_index, :name => "text_area_name", :index => 0)
37
+ text_area(:text_area_label, :label => "Text Area")
37
38
 
38
39
  hidden_field(:hidden_field_id, :id => "hidden_field_id")
39
40
  hidden_field(:hidden_field_class, :class => "hidden_field_class")
@@ -72,6 +73,7 @@ class Page
72
73
  select_list(:sel_list_class_index, :class => "sel_list_class", :index => 0)
73
74
  select_list(:sel_list_name_index, :name => "sel_list_name", :index => 0)
74
75
  select_list(:sel_list_multiple, :id => "sel_list_multiple")
76
+ select_list(:sel_list_label, :label => "Select List")
75
77
 
76
78
  checkbox(:cb_id, :id => 'cb_id')
77
79
  checkbox(:cb_name, :name => 'cb_name')
@@ -82,6 +84,7 @@ class Page
82
84
  checkbox(:cb_value, :value => '1')
83
85
  checkbox(:cb_class_index, :class => "cb_class", :index => 0)
84
86
  checkbox(:cb_name_index, :name => "cb_name", :index => 0)
87
+ checkbox(:cb_label, :label => 'Checkbox')
85
88
 
86
89
  radio_button(:milk_id, :id => 'milk_id')
87
90
  radio_button(:milk_name, :name => 'milk_name')
@@ -92,6 +95,7 @@ class Page
92
95
  radio_button(:milk_xpath, :xpath => "//input[@type='radio']")
93
96
  radio_button(:milk_class_index, :class => "milk_class", :index => 0)
94
97
  radio_button(:milk_name_index, :name => "milk_name", :index => 0)
98
+ radio_button(:milk_label, :label => "Radio")
95
99
 
96
100
  radio_button(:butter_id, :id => 'butter_id')
97
101
 
@@ -164,7 +168,7 @@ class Page
164
168
  button(:btn_class_index, :class => "btn_class", :index => 0)
165
169
  button(:btn_name_index, :name => "btn_name", :index => 0)
166
170
 
167
-
171
+
168
172
  button(:disabled_button, :value => 'Disabled')
169
173
 
170
174
  image(:image_id, :id => 'image_id')
@@ -294,14 +298,15 @@ class Page
294
298
  file_field(:file_field_class_index, :class => 'file_field_class', :index => 0)
295
299
  file_field(:file_field_name_index, :name => 'file_field_name', :index => 0)
296
300
  file_field(:file_field_xpath, :xpath => "//input[@type='file']")
301
+ file_field(:file_field_label, :label => "File Field")
297
302
 
298
303
  label(:label_id, :id => 'label_id')
299
304
  label(:label_name, :name => 'label_name')
300
305
  label(:label_class, :class => 'label_class')
301
306
  label(:label_css, :css => '.label_class')
302
307
  label(:label_text, :text => 'page-object is the best!')
303
- label(:label_index, :index => 1)
304
- label(:label_xpath, :xpath => '//label[2]')
308
+ label(:label_index, :index => 5)
309
+ label(:label_xpath, :xpath => '//label[6]')
305
310
  label(:label_class_index, :class => "label_class", :index => 0)
306
311
  label(:label_name_index, :name => "label_name", :index => 0)
307
312
 
@@ -344,7 +349,7 @@ class Page
344
349
  video(:video_xpath, :xpath => '//video')
345
350
  video(:video_class_index, :class => 'video', :index => 0)
346
351
  video(:video_name_index, :name => 'video', :index => 0)
347
-
352
+
348
353
  element(:article_id, :article, :id => 'article_id')
349
354
  element(:header_id, :header, :id => 'header_id')
350
355
  element(:footer_id, :footer, :id => 'footer_id')
@@ -19,6 +19,7 @@ Feature: Text Area
19
19
  | name |
20
20
  | xpath |
21
21
  | index |
22
+ | label |
22
23
 
23
24
  @selenium_only
24
25
  Scenario Outline: Locating text area on the Page
@@ -42,7 +43,7 @@ Feature: Text Area
42
43
  When I find a text area while the script is executing
43
44
  Then I should see that the text area exists
44
45
  And I should be able to type "I found it" into the area element
45
-
46
+
46
47
  Scenario: Clearing the text area
47
48
  When I type "abcdefghijklmnop" into the text area
48
49
  Then the text area should contain "abcdefghijklmnop"
@@ -194,6 +194,7 @@ module PageObject
194
194
  # * :index => Watir and Selenium
195
195
  # * :name => Watir and Selenium
196
196
  # * :xpath => Watir and Selenium
197
+ # * :label => Watir and Selenium
197
198
  # @param optional block to be invoked when element method is called
198
199
  #
199
200
  def text_area(name, identifier={:index => 0}, &block)
@@ -231,6 +232,7 @@ module PageObject
231
232
  # * :text => Watir only
232
233
  # * :value => Watir only
233
234
  # * :xpath => Watir and Selenium
235
+ # * :label => Watir and Selenium
234
236
  # @param optional block to be invoked when element method is called
235
237
  #
236
238
  def select_list(name, identifier={:index => 0}, &block)
@@ -242,12 +244,12 @@ module PageObject
242
244
  return platform.select_list_value_set(identifier.clone, value) unless block_given?
243
245
  self.send("#{name}_element").select(value)
244
246
  end
245
-
247
+
246
248
  define_method("#{name}_options") do
247
249
  element = self.send("#{name}_element")
248
250
  (element && element.options) ? element.options.collect(&:text) : []
249
251
  end
250
-
252
+
251
253
  standard_methods(name, identifier, 'select_list_for', &block)
252
254
  end
253
255
  alias_method :select, :select_list
@@ -307,6 +309,7 @@ module PageObject
307
309
  # * :name => Watir and Selenium
308
310
  # * :value => Watir and Selenium
309
311
  # * :xpath => Watir and Selenium
312
+ # * :label => Watir and Selenium
310
313
  # @param optional block to be invoked when element method is called
311
314
  #
312
315
  def checkbox(name, identifier={:index => 0}, &block)
@@ -347,6 +350,7 @@ module PageObject
347
350
  # * :name => Watir and Selenium
348
351
  # * :value => Watir and Selenium
349
352
  # * :xpath => Watir and Selenium
353
+ # * :label => Watir and Selenium
350
354
  # @param optional block to be invoked when element method is called
351
355
  #
352
356
  def radio_button(name, identifier={:index => 0}, &block)
@@ -859,6 +863,7 @@ module PageObject
859
863
  # * :name => Watir and Selenium
860
864
  # * :title => Watir and Selenium
861
865
  # * :xpath => Watir and Selenium
866
+ # * :label => Watir and Selenium
862
867
  # @param optional block to be invoked when element method is called
863
868
  #
864
869
  def file_field(name, identifier={:index => 0}, &block)
@@ -1118,7 +1123,7 @@ module PageObject
1118
1123
  platform.send(method, identifier.clone).exists?
1119
1124
  end
1120
1125
  end
1121
-
1126
+
1122
1127
  #
1123
1128
  # adds a method that will return an indexed property. The property will respond to
1124
1129
  # the [] method with an object that has a set of normal page_object properties that
@@ -11,13 +11,13 @@ module PageObject
11
11
  protected
12
12
 
13
13
  def self.watir_finders
14
- super + [:value]
14
+ super + [:value, :label]
15
15
  end
16
16
 
17
17
  def self.selenium_finders
18
- super + [:value]
18
+ super + [:value, :label]
19
19
  end
20
-
20
+
21
21
  def include_platform_for platform
22
22
  super
23
23
  if platform[:platform] == :watir_webdriver
@@ -33,6 +33,6 @@ module PageObject
33
33
  end
34
34
 
35
35
  ::PageObject::Elements.type_to_class[:checkbox] = ::PageObject::Elements::CheckBox
36
-
36
+
37
37
  end
38
38
  end
@@ -11,11 +11,11 @@ module PageObject
11
11
  protected
12
12
 
13
13
  def self.watir_finders
14
- super + [:title]
14
+ super + [:title, :label]
15
15
  end
16
16
 
17
17
  def self.selenium_finders
18
- super + [:title]
18
+ super + [:title, :label]
19
19
  end
20
20
 
21
21
  def include_platform_for platform
@@ -33,6 +33,6 @@ module PageObject
33
33
  end
34
34
 
35
35
  ::PageObject::Elements.type_to_class[:file] = ::PageObject::Elements::FileField
36
-
36
+
37
37
  end
38
38
  end
@@ -9,13 +9,13 @@ module PageObject
9
9
  end
10
10
 
11
11
  protected
12
-
12
+
13
13
  def self.watir_finders
14
- super + [:value]
14
+ super + [:value, :label]
15
15
  end
16
16
 
17
17
  def self.selenium_finders
18
- super + [:value]
18
+ super + [:value, :label]
19
19
  end
20
20
 
21
21
  def include_platform_for platform
@@ -15,7 +15,11 @@ module PageObject
15
15
  end
16
16
 
17
17
  def self.watir_finders
18
- super + [:text, :value]
18
+ super + [:text, :value, :label]
19
+ end
20
+
21
+ def self.selenium_finders
22
+ super + [:label]
19
23
  end
20
24
 
21
25
  def include_platform_for platform
@@ -8,6 +8,14 @@ module PageObject
8
8
  include_platform_for platform
9
9
  end
10
10
 
11
+ def self.watir_finders
12
+ super + [:label]
13
+ end
14
+
15
+ def self.selenium_finders
16
+ super + [:label]
17
+ end
18
+
11
19
  protected
12
20
 
13
21
  def include_platform_for platform
@@ -25,6 +33,6 @@ module PageObject
25
33
  end
26
34
 
27
35
  ::PageObject::Elements.tag_to_class[:textarea] = ::PageObject::Elements::TextArea
28
-
36
+
29
37
  end
30
38
  end
@@ -1,4 +1,4 @@
1
1
  module PageObject
2
2
  # @private
3
- VERSION = "0.8.6"
3
+ VERSION = "0.8.6.1"
4
4
  end
data/page-object.gemspec CHANGED
@@ -20,8 +20,8 @@ Gem::Specification.new do |s|
20
20
  s.require_paths = ["lib"]
21
21
 
22
22
  s.add_dependency 'watir-webdriver', '>= 0.6.2'
23
- s.add_dependency 'selenium-webdriver', '>= 2.30.0'
24
- s.add_dependency 'page_navigation', '>= 0.6'
23
+ s.add_dependency 'selenium-webdriver', '>= 2.31.0'
24
+ s.add_dependency 'page_navigation', '>= 0.7'
25
25
 
26
26
  s.add_development_dependency 'rspec', '>= 2.12.0'
27
27
  s.add_development_dependency 'cucumber', '>= 1.2.0'
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.6
4
+ version: 0.8.6.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: 2013-02-27 00:00:00.000000000 Z
12
+ date: 2013-03-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: watir-webdriver
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - ! '>='
36
36
  - !ruby/object:Gem::Version
37
- version: 2.30.0
37
+ version: 2.31.0
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - ! '>='
44
44
  - !ruby/object:Gem::Version
45
- version: 2.30.0
45
+ version: 2.31.0
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: page_navigation
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ! '>='
52
52
  - !ruby/object:Gem::Version
53
- version: '0.6'
53
+ version: '0.7'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ! '>='
60
60
  - !ruby/object:Gem::Version
61
- version: '0.6'
61
+ version: '0.7'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: rspec
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -397,7 +397,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
397
397
  version: '0'
398
398
  segments:
399
399
  - 0
400
- hash: -3437791365044287985
400
+ hash: -3618405462475899923
401
401
  required_rubygems_version: !ruby/object:Gem::Requirement
402
402
  none: false
403
403
  requirements:
@@ -406,7 +406,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
406
406
  version: '0'
407
407
  segments:
408
408
  - 0
409
- hash: -3437791365044287985
409
+ hash: -3618405462475899923
410
410
  requirements: []
411
411
  rubyforge_project: page-object
412
412
  rubygems_version: 1.8.25