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 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.hashes
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
@@ -3,6 +3,7 @@
3
3
  class Selenium::WebDriver::Element
4
4
  include SeleniumPlus::Elements::Table
5
5
  include SeleniumPlus::Elements::Select
6
+ include SeleniumPlus::Elements::DList
6
7
  include SeleniumPlus::Finders
7
8
 
8
9
  # Retrieve the given attribute
@@ -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 hashes
116
+ def table_hashes
117
117
  rows_text.map{ |row| Hash[*headers_text.zip(row).flatten] }
118
118
  end
119
119
  end
@@ -1,3 +1,3 @@
1
1
  module SeleniumPlus
2
- VERSION = '0.0.7'
2
+ VERSION = '0.0.8'
3
3
  end
data/lib/selenium_plus.rb CHANGED
@@ -21,6 +21,7 @@ require 'selenium_plus/page_obj/page'
21
21
  require 'selenium_plus/page_obj/section'
22
22
  require 'selenium_plus/selenium/table'
23
23
  require 'selenium_plus/selenium/select'
24
+ require 'selenium_plus/selenium/dlist'
24
25
  require 'selenium_plus/selenium/element'
25
26
 
26
27
 
@@ -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.add_dependency('rspec', ['>= 2.1.0'])
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
@@ -112,5 +112,11 @@
112
112
  <div>File Test</div>
113
113
  <input type="file" name="file_name" />
114
114
  </form>
115
+ <dl id="dl_test">
116
+ <dt>Coffee</dt>
117
+ <dd>Black hot drink</dd>
118
+ <dt>Milk</dt>
119
+ <dd>White cold drink</dd>
120
+ </dl>
115
121
  </body>
116
122
  </html>
@@ -20,6 +20,8 @@ module Test
20
20
  # File element
21
21
  element(:file_input, :css, 'input[name=file_name]')
22
22
 
23
+ element(:test_dlist, :id, 'dl_test')
24
+
23
25
  def show_first_table
24
26
  show_btn.click
25
27
  end
@@ -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.7
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-11 00:00:00.000000000 Z
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: &70164695941740 !ruby/object:Gem::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: *70164695941740
24
+ version_requirements: *70111134679200
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: selenium-webdriver
27
- requirement: &70164695940320 !ruby/object:Gem::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: *70164695940320
35
+ version_requirements: *70111134677940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70164695939480 !ruby/object:Gem::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: :runtime
44
+ type: :development
45
45
  prerelease: false
46
- version_requirements: *70164695939480
46
+ version_requirements: *70111134677000
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: simplecov
49
- requirement: &70164695938420 !ruby/object:Gem::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: *70164695938420
57
+ version_requirements: *70111134676100
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: cucumber
60
- requirement: &70164695937440 !ruby/object:Gem::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: *70164695937440
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