page-object 0.9.3 → 0.9.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8c3bfa3ecdb6fcee1e7ba4384511ee6479e86597
4
- data.tar.gz: 49404e73c224e8dfa6b68a3e878bce44a9e8c203
3
+ metadata.gz: bbb1492aa820c4b4bd9cd23ca1411705ceb1f6de
4
+ data.tar.gz: 41135828618efb81087f3da5bf7e8ac3f9bad78f
5
5
  SHA512:
6
- metadata.gz: 2ed2bdca4c6adc2148ee442a28ff39a8a1ffe71b2bdf2287a0fbfab78cb4250b628ca161a41d536c46b95ac8b4ba46c2340ff966f121e496ae6b94ea3a211741
7
- data.tar.gz: db51a5b4cf3ef8598355ed6192ff71a84ce6fe452192b0b4450a53f5acf3846a8c05bf2c111d5ff5efa13b398de737475c85cc73725152d14986aafeb4db785b
6
+ metadata.gz: 4f9c8de327b1647a9ddc4e90f6bf104da0188d9ec1797b06a4bb011e459874dedb9be24893f9cfe24ccdd294e7105c1126b125cb9a3e86eca06019307321827f
7
+ data.tar.gz: cad31706a84243504cb2431885f9aa34e04fd9c5c7579cd6849194d018d5b17900f415087f9c985152d1d6d910247de98dbef4068a24dd49d72c62d0c5c210e2
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ === Version 0.9.4 / 2013-11-29
2
+ * Enhancements
3
+ * Added ability for execute_scripts to accept arguments (Thanks Justin Ko)
4
+ * Added ability to identify frame using a regular expression when using Watir
5
+
1
6
  === Version 0.9.3 / 2013-10-24
2
7
  * Enhancements
3
8
  * Added class_name method to Element
data/Guardfile CHANGED
@@ -2,7 +2,7 @@
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
4
 
5
- guard 'rspec', :cli => '--color --format Fuubar' do
5
+ guard :rspec, cmd: 'rspec --color --format Fuubar' do
6
6
  watch(%r{^spec/.+_spec\.rb$})
7
7
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
8
8
  watch(%r{^lib/page-object/platforms/(.+)/.+\.rb$}) do |m|
@@ -11,7 +11,7 @@ guard 'rspec', :cli => '--color --format Fuubar' do
11
11
  watch('spec/spec_helper.rb') { "spec" }
12
12
  end
13
13
 
14
- guard 'cucumber', :notification => true, :all_after_pass => false, :cli => '--profile focus' do
14
+ guard 'cucumber', notification: true, all_after_pass: false, cli: '--profile focus' do
15
15
  watch(%r{^features/.+\.feature$})
16
16
  watch(%r{^features/support/.+$}) { "features" }
17
17
  watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
@@ -5,6 +5,6 @@ std_opts = "--no-source --color --format pretty" # Cucumber::Formatter::Fuubar"
5
5
  default: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only
6
6
  watir_webdriver: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only
7
7
  selenium_webdriver: DRIVER=SELENIUM <%= std_opts %> --tags ~@watir_only
8
- focus: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only --tags @focus
9
- #focus: DRIVER=SELENIUM <%= std_opts %> --tags ~@watir_only --tags @focus
8
+ #focus: DRIVER=WATIR <%= std_opts %> --tags ~@selenium_only --tags @focus
9
+ focus: DRIVER=SELENIUM <%= std_opts %> --tags ~@watir_only --tags @focus
10
10
 
@@ -10,6 +10,12 @@ Feature: Handling frames
10
10
  Then I should verify "page-object" is in the text field for frame 2 using "index"
11
11
  #And I should be able to get the text fields text from frame 2 using "index"
12
12
 
13
+ @watir_only
14
+ Scenario: Accessing elements withing the frame using Regexp
15
+ Given I am on the frame elements page
16
+ When I type "page-object" into the text field for frame 2 using "regex"
17
+ Then I should verify "page-object" is in the text field for frame 2 using "regex"
18
+
13
19
  Scenario: Switching between frames
14
20
  Given I am on the frame elements page
15
21
  When I type "page-object" into the text field for frame 2 using "id"
@@ -5,8 +5,8 @@
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
6
  </head>
7
7
  <frameset cols="40%, 40%, 20%">
8
- <frame src="frame_1.html" id="frame_1" name="frame1"/>
9
- <frame src="frame_2.html" id="frame_2" name="frame2"/>
10
- <frame src="frame_3.html" id="frame_3" name="frame3"/>
8
+ <frame src="frame_1.html" id="frame_one_1" name="frame1"/>
9
+ <frame src="frame_2.html" id="frame_two_2" name="frame2"/>
10
+ <frame src="frame_3.html" id="frame_three_3" name="frame3"/>
11
11
  </frameset>
12
12
  </html>
@@ -6,7 +6,7 @@
6
6
  </head>
7
7
  <body>
8
8
  <h1>Iframes</h1>
9
- <iframe src="frame_1.html" id="frame_1" name="frame1" class="iframe"></iframe>
10
- <iframe src="frame_2.html" id="frame_2" name="frame2" class="iframe"></iframe>
9
+ <iframe src="frame_1.html" id="frame_one_1" name="frame1" class="iframe"></iframe>
10
+ <iframe src="frame_2.html" id="frame_two_2" name="frame2" class="iframe"></iframe>
11
11
  </body>
12
- </html>
12
+ </html>
@@ -16,3 +16,13 @@ Feature: Handling javascript events
16
16
  Given I am on the static elements page
17
17
  Given I execute the javascript "return 2 + 2;"
18
18
  Then I should get the answer "4"
19
+
20
+ Scenario: Executing javascript in the browser with value argument
21
+ Given I am on the static elements page
22
+ Given I execute the javascript "return 2 + Number(arguments[0]);" with an argument of "2"
23
+ Then I should get the answer "4"
24
+
25
+ Scenario: Executing javascript in the browser with element argument
26
+ Given I am on the static elements page
27
+ Given I execute the javascript "arguments[0].value = 'abcDEF';" with a text field argument
28
+ Then the text field should contain "abcDEF"
@@ -8,10 +8,10 @@ class FramePage
8
8
  text_field(:text_field_1_index, :name => 'senderElement', :frame => frame)
9
9
  end
10
10
 
11
- in_frame(:id => 'frame_2') do |frame|
11
+ in_frame(:id => 'frame_two_2') do |frame|
12
12
  text_field(:text_field_2_id, :name => 'recieverElement', :frame => frame)
13
13
  end
14
- in_frame(:id => 'frame_1') do |frame|
14
+ in_frame(:id => 'frame_one_1') do |frame|
15
15
  text_field(:text_field_1_id, :name => 'senderElement', :frame => frame)
16
16
  end
17
17
 
@@ -21,6 +21,11 @@ class FramePage
21
21
  in_frame(:name => 'frame1') do |frame|
22
22
  text_field(:text_field_1_name, :name => 'senderElement', :frame => frame)
23
23
  end
24
+
25
+ in_frame(:id => /frame_two_\d+/) do |frame|
26
+ text_field(:text_field_2_regex, :name => 'recieverElement', :frame => frame)
27
+ end
28
+
24
29
  end
25
30
 
26
31
  Given /^I am on the frame elements page$/ do
@@ -76,19 +81,19 @@ Then /^I should be able to click the link in the frame$/ do
76
81
  end
77
82
 
78
83
  When /^I type "([^\"]*)" into the text field from frame 1 identified dynamically$/ do |value|
79
- @page.in_frame(:id => 'frame_1') do |frame|
84
+ @page.in_frame(:id => 'frame_one_1') do |frame|
80
85
  @page.text_field_element(:name => 'senderElement', :frame => frame).value = value
81
86
  end
82
87
  end
83
88
 
84
89
  Then /^I should verify "([^\"]*)" in the text field for frame 1 identified dynamically$/ do |value|
85
- @page.in_frame(:id => 'frame_1') do |frame|
90
+ @page.in_frame(:id => 'frame_one_1') do |frame|
86
91
  @page.text_field_element(:name => 'senderElement', :frame => frame).value.should == value
87
92
  end
88
93
  end
89
94
 
90
95
  When /^I trigger an alert within a frame$/ do
91
- @page.in_frame(:id => 'frame_3') do |frame|
96
+ @page.in_frame(:id => 'frame_three_3') do |frame|
92
97
  @msg = @page.alert(frame) do
93
98
  @page.button_element(:id => 'alert_button', :frame => frame).click
94
99
  end
@@ -96,7 +101,7 @@ When /^I trigger an alert within a frame$/ do
96
101
  end
97
102
 
98
103
  When /^I trigger a confirm within a frame$/ do
99
- @page.in_frame(:id => 'frame_3') do |frame|
104
+ @page.in_frame(:id => 'frame_three_3') do |frame|
100
105
  @msg = @page.confirm(true, frame) do
101
106
  @page.button_element(:id => 'confirm_button', :frame => frame).click
102
107
  end
@@ -104,7 +109,7 @@ When /^I trigger a confirm within a frame$/ do
104
109
  end
105
110
 
106
111
  When /^I trigger a prompt within a frame$/ do
107
- @page.in_frame(:id => 'frame_3') do |frame|
112
+ @page.in_frame(:id => 'frame_three_3') do |frame|
108
113
  @msg = @page.prompt("Cheezy", frame) do
109
114
  @page.button_element(:id => 'prompt_button', :frame => frame).click
110
115
  end
@@ -39,6 +39,15 @@ Given /^I execute the javascript "([^\"]*)"$/ do |script|
39
39
  @answer = @page.execute_script script
40
40
  end
41
41
 
42
+ Given /^I execute the javascript "([^\"]*)" with an argument of "([^\"]*)"$/ do |script, arg|
43
+ @answer = @page.execute_script script, arg
44
+ end
45
+
46
+ Given /^I execute the javascript "([^\"]*)" with a text field argument$/ do |script|
47
+ text_field = @page.text_field_element(:id => 'text_field_id')
48
+ @page.execute_script(script, text_field)
49
+ end
50
+
42
51
  Then /^I should get the answer "([^\"]*)"$/ do |answer|
43
52
  @answer.should == answer.to_i
44
- end
53
+ end
@@ -249,8 +249,14 @@ module PageObject
249
249
  #
250
250
  # Execute javascript on the browser
251
251
  #
252
- def execute_script(script)
253
- platform.execute_script(script)
252
+ # @example Get inner HTML of element
253
+ # span = @page.span_element
254
+ # @page.execute_script "return arguments[0].innerHTML", span
255
+ # #=> "Span innerHTML"
256
+ #
257
+ def execute_script(script, *args)
258
+ args.map! { |e| e.kind_of?(PageObject::Elements::Element) ? e.element : e }
259
+ platform.execute_script(script, *args)
254
260
  end
255
261
 
256
262
  #
@@ -146,6 +146,7 @@ module PageObject
146
146
  # * :id => Watir and Selenium
147
147
  # * :index => Watir and Selenium
148
148
  # * :name => Watir and Selenium
149
+ # * :regexp => Watir only
149
150
  # @param frame passed from a previous call to in_frame. Used to nest calls
150
151
  # @param block that contains the calls to elements that exist inside the frame.
151
152
  #
@@ -111,8 +111,8 @@ module PageObject
111
111
  # platform method to execute javascript on the browser
112
112
  # See PageObject#execute_script
113
113
  #
114
- def execute_script(script)
115
- @browser.execute_script script
114
+ def execute_script(script, *args)
115
+ @browser.execute_script(script, *args)
116
116
  end
117
117
 
118
118
  #
@@ -115,8 +115,8 @@ module PageObject
115
115
  # platform method to execute javascript on the browser
116
116
  # See PageObject#execute_script
117
117
  #
118
- def execute_script(script)
119
- @browser.execute_script(script)
118
+ def execute_script(script, *args)
119
+ @browser.execute_script(script, *args)
120
120
  end
121
121
 
122
122
  #
@@ -996,8 +996,12 @@ module PageObject
996
996
  frame_str = ''
997
997
  frame_identifiers.each do |id|
998
998
  value = id.values.first
999
- frame_str += "frame(:#{id.keys.first} => #{value})." if value.to_s.is_integer
1000
- frame_str += "frame(:#{id.keys.first} => '#{value}')." unless value.to_s.is_integer
999
+ if value.is_a?(Regexp)
1000
+ frame_str += "frame(:#{id.keys.first} => #{value.inspect})."
1001
+ else
1002
+ frame_str += "frame(:#{id.keys.first} => #{value})." if value.to_s.is_integer
1003
+ frame_str += "frame(:#{id.keys.first} => '#{value}')." unless value.to_s.is_integer
1004
+ end
1001
1005
  end
1002
1006
  frame_str
1003
1007
  end
@@ -1,4 +1,4 @@
1
1
  module PageObject
2
2
  # @private
3
- VERSION = "0.9.3"
3
+ VERSION = "0.9.4"
4
4
  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.3
4
+ version: 0.9.4
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-10-24 00:00:00.000000000 Z
11
+ date: 2013-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: watir-webdriver