selenium_plus 0.0.9 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -34,6 +34,7 @@ end
34
34
 
35
35
  class HomePage < SeleniumPlus::Page
36
36
 
37
+ iframe(:outer_iframe, OuterIframe, :id, 'outer_iframe')
37
38
  section(:info_section, InfoSection, :id, 'info')
38
39
  element(:show_btn, :css, 'input[value=Show]')
39
40
 
@@ -47,6 +48,23 @@ class HomePage < SeleniumPlus::Page
47
48
 
48
49
  end
49
50
 
51
+ # define iframe
52
+
53
+ class OuterIframe < SeleniumPlus::Iframe
54
+
55
+ iframe(:inner_iframe, InnerIframe, :id, 'inner_iframe')
56
+ element(:h_table, :id, 'iframe_h_table')
57
+ element(:search_btn, :css, 'input[name=search]')
58
+
59
+ def h_table_hashes
60
+ h_table.table_hashes
61
+ end
62
+
63
+ def search_table
64
+ search_btn.click
65
+ end
66
+ end
67
+
50
68
  # define sections
51
69
 
52
70
  class InfoSection < SeleniumPlus::Section
@@ -104,6 +122,14 @@ Then /^Horizontal table text should be:$/ do |h_table|
104
122
  @site.home_page.info_section.h_table.rows_text.should == h_table.rows
105
123
  end
106
124
 
125
+ Then /^Horizontal table inside outer iframe should be:$/ do |h_table|
126
+ @site.home_page.outer_iframe.h_table_hashes.should == h_table.hashes
127
+ end
128
+
129
+ Then /^Horizontal table inside inner iframe should be:$/ do |h_table|
130
+ @site.home_page.outer_iframe.inner_iframe.h_table_hashes.should == h_table.hashes
131
+ end
132
+
107
133
  ```
108
134
 
109
135
  Without using page object model
@@ -4,7 +4,7 @@ Feature: Verify iframe
4
4
  When I login to home page
5
5
 
6
6
  Scenario: Find table inside iframe
7
- Then Horizontal table inside iframe should be:
7
+ Then Horizontal table inside outer iframe should be:
8
8
  | ID: | Name: | Company: |
9
9
  | 1 | Jack | Google |
10
10
  | 2 | Maggie | Microsoft |
@@ -12,10 +12,21 @@ Feature: Verify iframe
12
12
  | ID: | Name: | Company: |
13
13
  | 1 | Alex | Google |
14
14
  | 2 | Eric | Microsoft |
15
- And I search horizontal table inside iframe
15
+ And I search horizontal table inside outer iframe
16
16
  And Section titles should be:
17
17
  | Information tables |
18
18
  | Table with no header |
19
19
  | Table with no body |
20
+ And Horizontal table inside inner iframe should be:
21
+ | ID: | Name: | Company: |
22
+ | 1 | Bruce | HP |
23
+ | 2 | Joey | IBM |
24
+ And Definition list dt text should be:
25
+ | Coffee | Milk |
26
+ And Title inside div#info should be: Information tables
27
+ And Horizontal table inside outer iframe should be:
28
+ | ID: | Name: | Company: |
29
+ | 1 | Jack | Google |
30
+ | 2 | Maggie | Microsoft |
20
31
 
21
32
 
@@ -1,7 +1,11 @@
1
- Then /^Horizontal table inside iframe should be:$/ do |h_table|
2
- @site.home_page.test_iframe.h_table_hashes.should == h_table.hashes
1
+ Then /^Horizontal table inside outer iframe should be:$/ do |h_table|
2
+ @site.home_page.outer_iframe.h_table_hashes.should == h_table.hashes
3
3
  end
4
4
 
5
- Then /^I search horizontal table inside iframe$/ do
6
- @site.home_page.test_iframe.search_table
5
+ Then /^I search horizontal table inside outer iframe$/ do
6
+ @site.home_page.outer_iframe.search_table
7
+ end
8
+
9
+ Then /^Horizontal table inside inner iframe should be:$/ do |h_table|
10
+ @site.home_page.outer_iframe.inner_iframe.h_table_hashes.should == h_table.hashes
7
11
  end
@@ -55,6 +55,14 @@ module SeleniumPlus
55
55
  native.save_screenshot(path)
56
56
  end
57
57
 
58
+ def switch_to_frame(frame)
59
+ native.switch_to.frame(frame)
60
+ end
61
+
62
+ def switch_to_page
63
+ native.switch_to.default_content
64
+ end
65
+
58
66
  def reset!
59
67
  # Use instance variable directly so we avoid starting the browser just to reset the session
60
68
  if @native
@@ -3,11 +3,8 @@ module SeleniumPlus
3
3
  extend Container
4
4
  include Finders
5
5
 
6
- #attr_reader :iframe_element
7
-
8
6
  def initialize(iframe_element)
9
- SeleniumPlus.driver.native.switch_to.frame(iframe_element[:id])
10
- #@root_element = iframe_element
7
+ SeleniumPlus.driver.switch_to_frame(iframe_element)
11
8
  end
12
9
 
13
10
  end
@@ -4,7 +4,7 @@ module SeleniumPlus
4
4
  include Finders
5
5
 
6
6
  def initialize
7
- SeleniumPlus.driver.native.switch_to.default_content
7
+ SeleniumPlus.driver.switch_to_page
8
8
  end
9
9
 
10
10
  def goto(url)
@@ -1,3 +1,3 @@
1
1
  module SeleniumPlus
2
- VERSION = '0.0.9'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -118,6 +118,6 @@
118
118
  <dt>Milk</dt>
119
119
  <dd>White cold drink</dd>
120
120
  </dl>
121
- <iframe id="my_iframe" src="iframe.html" height="100" width="400"></iframe>
121
+ <iframe id="outer_iframe" src="outer_iframe.html" height="250" width="450"></iframe>
122
122
  </body>
123
123
  </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>iframe Page</title>
5
+ </head>
6
+ <body>
7
+ <table id="iframe_h_table" class="horizontal_headers">
8
+ <tr>
9
+ <th>ID:</th>
10
+ <th>Name:</th>
11
+ <th>Company:</th>
12
+ </tr>
13
+ <tr>
14
+ <td>1</td>
15
+ <td>Bruce</td>
16
+ <td>HP</td>
17
+ </tr>
18
+ <tr>
19
+ <td>2</td>
20
+ <td>Joey</td>
21
+ <td>IBM</td>
22
+ </tr>
23
+ </table>
24
+ <input type="submit" value="Search" name="search" />
25
+ </body>
26
+ </html>
@@ -22,5 +22,6 @@
22
22
  </tr>
23
23
  </table>
24
24
  <input type="submit" value="Search" name="search" />
25
+ <iframe id="inner_iframe" src="inner_iframe.html" height="120" width="400"></iframe>
25
26
  </body>
26
27
  </html>
@@ -1,6 +1,6 @@
1
1
  module Test
2
2
 
3
- class TestIframe < SeleniumPlus::Iframe
3
+ class InnerIframe < SeleniumPlus::Iframe
4
4
 
5
5
  element(:h_table, :id, 'iframe_h_table')
6
6
  element(:search_btn, :css, 'input[name=search]')
@@ -0,0 +1,18 @@
1
+ module Test
2
+
3
+ class OuterIframe < SeleniumPlus::Iframe
4
+
5
+ iframe(:inner_iframe, InnerIframe, :id, 'inner_iframe')
6
+ element(:h_table, :id, 'iframe_h_table')
7
+ element(:search_btn, :css, 'input[name=search]')
8
+
9
+ def h_table_hashes
10
+ h_table.table_hashes
11
+ end
12
+
13
+ def search_table
14
+ search_btn.click
15
+ end
16
+
17
+ end
18
+ end
@@ -1,7 +1,7 @@
1
1
  module Test
2
2
  class HomePage < SeleniumPlus::Page
3
3
 
4
- iframe(:test_iframe, TestIframe, :id, 'my_iframe')
4
+ iframe(:outer_iframe, OuterIframe, :id, 'outer_iframe')
5
5
  section(:info_section, InfoSection, :id, 'info')
6
6
 
7
7
  element(:show_btn, :css, 'input[value=Show]')
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.9
4
+ version: 0.1.0
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-04-01 00:00:00.000000000 Z
12
+ date: 2013-04-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &70365951197380 !ruby/object:Gem::Requirement
16
+ requirement: &70211936386700 !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: *70365951197380
24
+ version_requirements: *70211936386700
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: selenium-webdriver
27
- requirement: &70365951196380 !ruby/object:Gem::Requirement
27
+ requirement: &70211936385780 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.25.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70365951196380
35
+ version_requirements: *70211936385780
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70365951195280 !ruby/object:Gem::Requirement
38
+ requirement: &70211936384680 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 2.1.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70365951195280
46
+ version_requirements: *70211936384680
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: simplecov
49
- requirement: &70365951194380 !ruby/object:Gem::Requirement
49
+ requirement: &70211936383700 !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: *70365951194380
57
+ version_requirements: *70211936383700
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: cucumber
60
- requirement: &70365951193320 !ruby/object:Gem::Requirement
60
+ requirement: &70211936382560 !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: *70365951193320
68
+ version_requirements: *70211936382560
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.
@@ -113,9 +113,11 @@ files:
113
113
  - lib/selenium_plus/version.rb
114
114
  - selenium_plus.gemspec
115
115
  - test_site/html/home.html
116
- - test_site/html/iframe.html
116
+ - test_site/html/inner_iframe.html
117
117
  - test_site/html/login.html
118
- - test_site/iframes/test_iframe.rb
118
+ - test_site/html/outer_iframe.html
119
+ - test_site/iframes/inner_iframe.rb
120
+ - test_site/iframes/outer_iframe.rb
119
121
  - test_site/pages/home_page.rb
120
122
  - test_site/pages/login_page.rb
121
123
  - test_site/sections/info_section.rb