page-object 0.9.1 → 0.9.2
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.
- checksums.yaml +4 -4
- data/ChangeLog +5 -0
- data/README.md +1 -1
- data/features/multi_elements.feature +8 -0
- data/features/step_definitions/multi_elements_steps.rb +5 -0
- data/lib/page-object/accessors.rb +39 -10
- data/lib/page-object/version.rb +1 -1
- data/page-object.gemspec +1 -1
- data/spec/spec_helper.rb +8 -8
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6c01b813ea17360d98a97206dd1dc24a8928c9dd
|
|
4
|
+
data.tar.gz: 9cc17aafde0461e9c883e97415ae0d642e979f7f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8de08d4d39d7fb91fdaf4fa9d38a430a649502c1d0ffb47eb92d20e60ec5699c60ea73801828eb4e5a90ccd5774379dd4649151b844f7f4dc166e8589467957f
|
|
7
|
+
data.tar.gz: ff1478fc9c7438771b0ac4e427a00230950e47e2933c259ebae7ea8a3c7a61b573e010b90b6653d67af2edd7b03b0f9ab413c06d3f1a1717a7c202469ac71272
|
data/ChangeLog
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
=== Version 0.9.2 / 2013-8-23
|
|
2
|
+
* Enhancements
|
|
3
|
+
* Added elements method to accessor so one can gen methods for generic collections of elements
|
|
4
|
+
* Updated to use the latest selenium-webdriver 2.35.0
|
|
5
|
+
|
|
1
6
|
=== Version 0.9.1 / 2013-7-16
|
|
2
7
|
* Enhancements
|
|
3
8
|
* Added css locator support for Image (Thanks Elben Shira)
|
data/README.md
CHANGED
|
@@ -9,7 +9,7 @@ A simple gem that assists in creating flexible page objects for testing browser
|
|
|
9
9
|
|
|
10
10
|
The project [wiki](https://github.com/cheezy/page-object/wiki/page-object) is the first place to go to learn about how to use page-object.
|
|
11
11
|
|
|
12
|
-
The rdocs for this project can be found at [rubydoc.info](http://rubydoc.info/
|
|
12
|
+
The rdocs for this project can be found at [rubydoc.info](http://rubydoc.info/gems/page-object/frames).
|
|
13
13
|
|
|
14
14
|
To see the changes from release to release please look at the [ChangeLog](https://raw.github.com/cheezy/page-object/master/ChangeLog)
|
|
15
15
|
|
|
@@ -477,3 +477,11 @@ Feature: Multi Elements
|
|
|
477
477
|
And the title for file field 1 should be "File Field 1"
|
|
478
478
|
And the title for file field 2 should be "File Field 2"
|
|
479
479
|
And the title for file field 3 should be "File Field 3"
|
|
480
|
+
|
|
481
|
+
@focus
|
|
482
|
+
Scenario: Selecting multple generic element types
|
|
483
|
+
When I select the multiple elements with a tag label
|
|
484
|
+
Then I should have 3 labels
|
|
485
|
+
And the text for label 1 should be "Label 1"
|
|
486
|
+
And the text for label 2 should be "Label 2"
|
|
487
|
+
And the text for label 3 should be "Label 3"
|
|
@@ -30,6 +30,7 @@ class MultiElementsPage
|
|
|
30
30
|
paragraphs(:the_paragraphs, :class => 'p')
|
|
31
31
|
labels(:the_labels, :class => 'label')
|
|
32
32
|
file_fields(:the_file_fields, :class => 'file_field_class')
|
|
33
|
+
elements(:generic_label, :label, :class => 'label')
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
|
|
@@ -521,3 +522,7 @@ end
|
|
|
521
522
|
When /^I select the divs using a block$/ do
|
|
522
523
|
@elements = @page.block_divs_elements
|
|
523
524
|
end
|
|
525
|
+
|
|
526
|
+
When(/^I select the multiple elements with a tag label$/) do
|
|
527
|
+
@elements = @page.generic_label_elements
|
|
528
|
+
end
|
|
@@ -1001,6 +1001,30 @@ module PageObject
|
|
|
1001
1001
|
standard_methods(name, identifier, 'video_for', &block)
|
|
1002
1002
|
end
|
|
1003
1003
|
|
|
1004
|
+
#
|
|
1005
|
+
# adds two methods - one to retrieve a svg, and another to check
|
|
1006
|
+
# the svg's existence.
|
|
1007
|
+
#
|
|
1008
|
+
# @example
|
|
1009
|
+
# svg(:circle, :id => 'circle')
|
|
1010
|
+
# # will generate 'circle_element', and 'circle?' methods
|
|
1011
|
+
#
|
|
1012
|
+
# @param [Symbol] the name used for the generated methods
|
|
1013
|
+
# @param [Hash] identifier how we find a svg. You can use a multiple paramaters
|
|
1014
|
+
# by combining of any of the following except xpath. The valid keys are:
|
|
1015
|
+
# * :class => Watir and Selenium
|
|
1016
|
+
# * :css => Selenium only
|
|
1017
|
+
# * :id => Watir and Selenium
|
|
1018
|
+
# * :index => Watir and Selenium
|
|
1019
|
+
# * :name => Watir and Selenium
|
|
1020
|
+
# * :xpath => Watir and Selenium
|
|
1021
|
+
# @param optional block to be invoked when element method is called
|
|
1022
|
+
#
|
|
1023
|
+
def svg(name, identifier={:index => 0}, &block)
|
|
1024
|
+
standard_methods(name, identifier, 'svg_for', &block)
|
|
1025
|
+
end
|
|
1026
|
+
|
|
1027
|
+
|
|
1004
1028
|
#
|
|
1005
1029
|
# adds three methods - one to retrieve the text of an element, another
|
|
1006
1030
|
# to retrieve an element, and another to check the element's existence.
|
|
@@ -1035,15 +1059,16 @@ module PageObject
|
|
|
1035
1059
|
end
|
|
1036
1060
|
|
|
1037
1061
|
#
|
|
1038
|
-
# adds
|
|
1039
|
-
#
|
|
1062
|
+
# adds a method to return a collection of generic Element objects
|
|
1063
|
+
# for a specific tag.
|
|
1040
1064
|
#
|
|
1041
1065
|
# @example
|
|
1042
|
-
#
|
|
1043
|
-
# # will generate '
|
|
1066
|
+
# elements(:title, :header, :id => 'title')
|
|
1067
|
+
# # will generate ''title_elements'
|
|
1044
1068
|
#
|
|
1045
1069
|
# @param [Symbol] the name used for the generated methods
|
|
1046
|
-
# @param [
|
|
1070
|
+
# @param [Symbol] the name of the tag for the element
|
|
1071
|
+
# @param [Hash] identifier how we find an element. You can use a multiple paramaters
|
|
1047
1072
|
# by combining of any of the following except xpath. The valid keys are:
|
|
1048
1073
|
# * :class => Watir and Selenium
|
|
1049
1074
|
# * :css => Selenium only
|
|
@@ -1053,18 +1078,22 @@ module PageObject
|
|
|
1053
1078
|
# * :xpath => Watir and Selenium
|
|
1054
1079
|
# @param optional block to be invoked when element method is called
|
|
1055
1080
|
#
|
|
1056
|
-
def
|
|
1057
|
-
|
|
1081
|
+
def elements(name, tag, identifier={:index => 0}, &block)
|
|
1082
|
+
define_method("#{name}_elements") do
|
|
1083
|
+
return call_block(&block) if block_given?
|
|
1084
|
+
platform.elements_for(tag, identifier.clone)
|
|
1085
|
+
end
|
|
1058
1086
|
end
|
|
1059
1087
|
|
|
1060
|
-
|
|
1061
1088
|
#
|
|
1062
1089
|
# methods to generate accessors for types that follow the same
|
|
1063
1090
|
# pattern as element
|
|
1064
1091
|
#
|
|
1065
1092
|
# @example
|
|
1066
|
-
#
|
|
1067
|
-
# will generate '
|
|
1093
|
+
# article(:my_article, :id => "article_id")
|
|
1094
|
+
# will generate 'my_article', 'my_article_element' and 'my_article?'
|
|
1095
|
+
# articles(:my_article, :id => 'article_id')
|
|
1096
|
+
# will generate 'my_article_elements'
|
|
1068
1097
|
#
|
|
1069
1098
|
# @param [Symbol] the name used for the generated methods
|
|
1070
1099
|
# @param [Symbol] the name of the tag for the element
|
data/lib/page-object/version.rb
CHANGED
data/page-object.gemspec
CHANGED
|
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
|
21
21
|
s.require_paths = ["lib"]
|
|
22
22
|
|
|
23
23
|
s.add_dependency 'watir-webdriver', '>= 0.6.4'
|
|
24
|
-
s.add_dependency 'selenium-webdriver', '>= 2.
|
|
24
|
+
s.add_dependency 'selenium-webdriver', '>= 2.35.0'
|
|
25
25
|
s.add_dependency 'page_navigation', '>= 0.8'
|
|
26
26
|
|
|
27
27
|
s.add_development_dependency 'rspec', '>= 2.12.0'
|
data/spec/spec_helper.rb
CHANGED
|
@@ -17,28 +17,28 @@ require 'page-object'
|
|
|
17
17
|
|
|
18
18
|
def mock_watir_browser
|
|
19
19
|
watir_browser = double('watir')
|
|
20
|
-
watir_browser.stub
|
|
21
|
-
watir_browser.stub
|
|
20
|
+
watir_browser.stub(:is_a?).with(anything()).and_return(false)
|
|
21
|
+
watir_browser.stub(:is_a?).with(Watir::Browser).and_return(true)
|
|
22
22
|
watir_browser
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def mock_selenium_browser
|
|
27
27
|
selenium_browser = double('selenium')
|
|
28
|
-
selenium_browser.stub
|
|
29
|
-
selenium_browser.stub
|
|
28
|
+
selenium_browser.stub(:is_a?).with(Watir::Browser).and_return(false)
|
|
29
|
+
selenium_browser.stub(:is_a?).with(Selenium::WebDriver::Driver).and_return(true)
|
|
30
30
|
selenium_browser
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
def mock_adapter(browser, page_object)
|
|
35
35
|
adapter = double('adapter')
|
|
36
|
-
adapter.stub
|
|
37
|
-
adapter.stub
|
|
38
|
-
adapter.stub
|
|
36
|
+
adapter.stub(:is_for?).with(anything()).and_return false
|
|
37
|
+
adapter.stub(:is_for?).with(browser).and_return true
|
|
38
|
+
adapter.stub(:create_page_object).and_return page_object
|
|
39
39
|
adapter
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def mock_adapters(adapters)
|
|
43
|
-
PageObject::Platforms.stub
|
|
43
|
+
PageObject::Platforms.stub(:get).and_return adapters
|
|
44
44
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: page-object
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jeff Morgan
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2013-
|
|
11
|
+
date: 2013-08-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: watir-webdriver
|
|
@@ -30,14 +30,14 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - '>='
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 2.
|
|
33
|
+
version: 2.35.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - '>='
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 2.
|
|
40
|
+
version: 2.35.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: page_navigation
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|