selenium_plus 0.0.7 → 0.0.8
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/README.md +10 -2
- data/features/dlist.feature +17 -0
- data/features/step_definitions/dlist_steps.rb +11 -0
- data/features/step_definitions/tables_steps.rb +1 -1
- data/lib/selenium_plus/selenium/dlist.rb +76 -0
- data/lib/selenium_plus/selenium/element.rb +1 -0
- data/lib/selenium_plus/selenium/table.rb +1 -1
- data/lib/selenium_plus/version.rb +1 -1
- data/lib/selenium_plus.rb +1 -0
- data/selenium_plus.gemspec +1 -1
- data/test_site/html/home.html +6 -0
- data/test_site/pages/home_page.rb +2 -0
- data/test_site/test_project.rb +2 -1
- metadata +18 -13
data/README.md
CHANGED
@@ -8,8 +8,10 @@ $ gem install selenium_plus
|
|
8
8
|
|
9
9
|
## Key benefits
|
10
10
|
|
11
|
+
- Native Selenium API
|
11
12
|
- Quickly build Page Objects
|
12
|
-
- Includes new element class e.g. Table
|
13
|
+
- Includes new element class e.g. Table, Select
|
14
|
+
- Cucumber tags support
|
13
15
|
|
14
16
|
## Usage
|
15
17
|
|
@@ -38,6 +40,11 @@ class HomePage < SeleniumPlus::Page
|
|
38
40
|
def show_first_table
|
39
41
|
show_btn.click
|
40
42
|
end
|
43
|
+
|
44
|
+
def titles
|
45
|
+
find_all(:css, 'div.title').map{ |cell| cell.text }
|
46
|
+
end
|
47
|
+
|
41
48
|
end
|
42
49
|
|
43
50
|
# define sections
|
@@ -45,6 +52,7 @@ end
|
|
45
52
|
class InfoSection < SeleniumPlus::Section
|
46
53
|
element(:h_table, :css, 'table.horizontal_headers')
|
47
54
|
element(:v_table, :css, 'table.vertical_headers')
|
55
|
+
elements(:title_divs, :css, 'div.title')
|
48
56
|
end
|
49
57
|
|
50
58
|
# define site
|
@@ -111,5 +119,5 @@ driver = SeleniumPlus.using_driver(:firefox_driver)
|
|
111
119
|
driver.visit('http://www.google.com.hk')
|
112
120
|
driver.find(:id, 'lst-ib').type('Selenium')
|
113
121
|
driver.find(:css, 'input[name=btnK]').click
|
114
|
-
|
122
|
+
driver.find_all(:css, 'li.g')
|
115
123
|
```
|
@@ -0,0 +1,17 @@
|
|
1
|
+
Feature: Verify HTML Definition List
|
2
|
+
|
3
|
+
Background:
|
4
|
+
When I login to home page
|
5
|
+
|
6
|
+
Scenario: Verify Definition List dt text
|
7
|
+
Then Definition list dt text should be:
|
8
|
+
| Coffee | Milk |
|
9
|
+
|
10
|
+
Scenario: Verify Definition List dd text
|
11
|
+
Then Definition list dd text should be:
|
12
|
+
| Black hot drink | White cold drink |
|
13
|
+
|
14
|
+
Scenario: Verify Definition List hashes
|
15
|
+
Then Definition list hashes text should be:
|
16
|
+
| Coffee | Milk |
|
17
|
+
| Black hot drink | White cold drink |
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Then /^Definition list dt text should be:$/ do |table|
|
2
|
+
@site.home_page.test_dlist.dt_text.should == table.raw.first
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^Definition list dd text should be:$/ do |table|
|
6
|
+
@site.home_page.test_dlist.dd_text == table.raw.first
|
7
|
+
end
|
8
|
+
|
9
|
+
Then /^Definition list hashes text should be:$/ do |table|
|
10
|
+
@site.home_page.test_dlist.dlist_hashes.should == table.hashes.first
|
11
|
+
end
|
@@ -12,7 +12,7 @@ Then /^Horizontal table text should be:$/ do |h_table|
|
|
12
12
|
end
|
13
13
|
|
14
14
|
Then /^Horizontal table hashes should be:$/ do |h_table|
|
15
|
-
actual = @site.home_page.info_section.h_table.
|
15
|
+
actual = @site.home_page.info_section.h_table.table_hashes
|
16
16
|
expected = h_table.hashes
|
17
17
|
expected.each_index{ |index| expected[index].keys.each{ |key| actual[index][key].should == expected[index][key]} }
|
18
18
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module SeleniumPlus
|
2
|
+
module Elements
|
3
|
+
module DList
|
4
|
+
# Raw dt elements of the definition list
|
5
|
+
#
|
6
|
+
# @return Array<Selenium::WebDriver::Element>]
|
7
|
+
def dt_raw
|
8
|
+
self.find_all(:css, 'dt')
|
9
|
+
end
|
10
|
+
|
11
|
+
# Raw dd elements of the definition list
|
12
|
+
#
|
13
|
+
# @return Array<Selenium::WebDriver::Element>]
|
14
|
+
def dd_raw
|
15
|
+
self.find_all(:css, 'dd')
|
16
|
+
end
|
17
|
+
|
18
|
+
# dt elements text of the definition list
|
19
|
+
#
|
20
|
+
# Examples:
|
21
|
+
# A html definition list:
|
22
|
+
# <dl>
|
23
|
+
# <dt>Title 1</dt>
|
24
|
+
# <dd>Description 1</dd>
|
25
|
+
# <dt>Title 2</dt>
|
26
|
+
# <dd>Description 2</dd>
|
27
|
+
# </dl>
|
28
|
+
#
|
29
|
+
# Gets converted into the following:
|
30
|
+
# # => ['Title 1', 'Title 2']
|
31
|
+
#
|
32
|
+
# @return [Hash]
|
33
|
+
def dt_text
|
34
|
+
dt_raw.map{ |el| el.text}
|
35
|
+
end
|
36
|
+
|
37
|
+
# dd elements text of the definition list
|
38
|
+
#
|
39
|
+
# Examples:
|
40
|
+
# A html definition list:
|
41
|
+
# <dl>
|
42
|
+
# <dt>Title 1</dt>
|
43
|
+
# <dd>Description 1</dd>
|
44
|
+
# <dt>Title 2</dt>
|
45
|
+
# <dd>Description 2</dd>
|
46
|
+
# </dl>
|
47
|
+
#
|
48
|
+
# Gets converted into the following:
|
49
|
+
# # => [Description 1', 'Description 2]
|
50
|
+
#
|
51
|
+
# @return [Hash]
|
52
|
+
def dd_text
|
53
|
+
dd_raw.map{ |el| el.text}
|
54
|
+
end
|
55
|
+
|
56
|
+
# Converts this table into an Array of Hash where the keys of each Hash are the headers in the table.
|
57
|
+
#
|
58
|
+
# Examples:
|
59
|
+
# A html definition list:
|
60
|
+
# <dl>
|
61
|
+
# <dt>Title 1</dt>
|
62
|
+
# <dd>Description 1</dd>
|
63
|
+
# <dt>Title 2</dt>
|
64
|
+
# <dd>Description 2</dd>
|
65
|
+
# </dl>
|
66
|
+
#
|
67
|
+
# Gets converted into the following:
|
68
|
+
# # => {'Title 1' => 'Description 1', 'Title 2' => 'Description 2 }
|
69
|
+
#
|
70
|
+
# @return [Hash]
|
71
|
+
def dlist_hashes
|
72
|
+
Hash[*dt_text.zip(dd_text).flatten]
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -113,7 +113,7 @@ module SeleniumPlus
|
|
113
113
|
# # => [{'id' => '1', 'name' => 'alex', 'age' => '10'}, {'id' => '2', 'name' => 'smith', 'age' => '16'}]
|
114
114
|
#
|
115
115
|
# @return [Array<Hash>]
|
116
|
-
def
|
116
|
+
def table_hashes
|
117
117
|
rows_text.map{ |row| Hash[*headers_text.zip(row).flatten] }
|
118
118
|
end
|
119
119
|
end
|
data/lib/selenium_plus.rb
CHANGED
data/selenium_plus.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |gem|
|
|
19
19
|
|
20
20
|
gem.add_dependency('rake')
|
21
21
|
gem.add_dependency('selenium-webdriver', ['>= 2.25.0'])
|
22
|
-
gem.
|
22
|
+
gem.add_development_dependency('rspec', ['>= 2.1.0'])
|
23
23
|
gem.add_development_dependency('simplecov', ['>= 0.7.1'])
|
24
24
|
gem.add_development_dependency('cucumber', ['>= 1.2.1'])
|
25
25
|
end
|
data/test_site/html/home.html
CHANGED
data/test_site/test_project.rb
CHANGED
@@ -9,4 +9,5 @@ driver = SeleniumPlus.using_driver(:firefox_driver)
|
|
9
9
|
|
10
10
|
driver.visit('http://www.google.com.hk')
|
11
11
|
driver.find(:id, 'lst-ib').type('Selenium')
|
12
|
-
driver.find(:css, 'input[name=btnK]').click
|
12
|
+
driver.find(:css, 'input[name=btnK]').click
|
13
|
+
driver.find_all(:css, 'li.g')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium_plus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &70111134679200 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70111134679200
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: selenium-webdriver
|
27
|
-
requirement: &
|
27
|
+
requirement: &70111134677940 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,21 +32,21 @@ dependencies:
|
|
32
32
|
version: 2.25.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70111134677940
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70111134677000 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: 2.1.0
|
44
|
-
type: :
|
44
|
+
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70111134677000
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: simplecov
|
49
|
-
requirement: &
|
49
|
+
requirement: &70111134676100 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.7.1
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70111134676100
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: cucumber
|
60
|
-
requirement: &
|
60
|
+
requirement: &70111134675040 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 1.2.1
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70111134675040
|
69
69
|
description: SeleniumPlus creates a very thin layer between Selenium and your applications,
|
70
70
|
it gives your a simple and quick way to describe your web site using the Page Object
|
71
71
|
Model.
|
@@ -80,10 +80,12 @@ files:
|
|
80
80
|
- LICENSE.txt
|
81
81
|
- README.md
|
82
82
|
- Rakefile
|
83
|
+
- features/dlist.feature
|
83
84
|
- features/drivers.feature
|
84
85
|
- features/element.feature
|
85
86
|
- features/finders.feature
|
86
87
|
- features/select.feature
|
88
|
+
- features/step_definitions/dlist_steps.rb
|
87
89
|
- features/step_definitions/drivers_steps.rb
|
88
90
|
- features/step_definitions/element_steps.rb
|
89
91
|
- features/step_definitions/finder_steps.rb
|
@@ -101,6 +103,7 @@ files:
|
|
101
103
|
- lib/selenium_plus/page_obj/container.rb
|
102
104
|
- lib/selenium_plus/page_obj/page.rb
|
103
105
|
- lib/selenium_plus/page_obj/section.rb
|
106
|
+
- lib/selenium_plus/selenium/dlist.rb
|
104
107
|
- lib/selenium_plus/selenium/element.rb
|
105
108
|
- lib/selenium_plus/selenium/select.rb
|
106
109
|
- lib/selenium_plus/selenium/table.rb
|
@@ -138,10 +141,12 @@ signing_key:
|
|
138
141
|
specification_version: 3
|
139
142
|
summary: ''
|
140
143
|
test_files:
|
144
|
+
- features/dlist.feature
|
141
145
|
- features/drivers.feature
|
142
146
|
- features/element.feature
|
143
147
|
- features/finders.feature
|
144
148
|
- features/select.feature
|
149
|
+
- features/step_definitions/dlist_steps.rb
|
145
150
|
- features/step_definitions/drivers_steps.rb
|
146
151
|
- features/step_definitions/element_steps.rb
|
147
152
|
- features/step_definitions/finder_steps.rb
|