selenium_plus 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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