watir-webdriver 0.5.8 → 0.6.0
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 +7 -5
- data/lib/watir-webdriver.rb +2 -0
- data/lib/watir-webdriver/alert.rb +53 -0
- data/lib/watir-webdriver/browser.rb +17 -0
- data/lib/watir-webdriver/extensions/alerts.rb +5 -0
- data/lib/watir-webdriver/screenshot.rb +40 -0
- data/lib/watir-webdriver/version.rb +1 -1
- data/spec/alert_spec.rb +69 -27
- data/spec/browser_spec.rb +6 -0
- data/spec/html/alerts.html +2 -1
- data/spec/screenshot_spec.rb +25 -0
- metadata +6 -2
data/README.md
CHANGED
@@ -6,11 +6,6 @@ See http://rubyforge.org/pipermail/wtr-development/2009-October/001313.html.
|
|
6
6
|
|
7
7
|
[](http://travis-ci.org/watir/watir-webdriver)
|
8
8
|
|
9
|
-
API docs
|
10
|
-
--------
|
11
|
-
|
12
|
-
http://jarib.github.com/watir-webdriver/doc/
|
13
|
-
|
14
9
|
Example
|
15
10
|
-------
|
16
11
|
```ruby
|
@@ -39,9 +34,16 @@ watir-webdriver uses [watirspec](http://github.com/watir/watirspec) for testing.
|
|
39
34
|
|
40
35
|
Specs specific to watir-webdriver are found in spec/*_spec.rb, with watirspec in spec/watirspec.
|
41
36
|
|
37
|
+
API docs
|
38
|
+
--------
|
39
|
+
|
40
|
+
* http://rdoc.info/gems/watir-webdriver/ (basic docs, updated on every release)
|
41
|
+
* http://watir.github.com/watir-webdriver/doc/ (includes all attribute methods, updated occasionally)
|
42
|
+
|
42
43
|
See also
|
43
44
|
--------
|
44
45
|
|
46
|
+
* http://watirwebdriver.com
|
45
47
|
* http://github.com/jarib/webidl
|
46
48
|
* http://github.com/watir/watirspec
|
47
49
|
* http://selenium.googlecode.com
|
data/lib/watir-webdriver.rb
CHANGED
@@ -7,6 +7,7 @@ require 'watir-webdriver/exception'
|
|
7
7
|
require 'watir-webdriver/xpath_support'
|
8
8
|
require 'watir-webdriver/window'
|
9
9
|
require 'watir-webdriver/has_window'
|
10
|
+
require 'watir-webdriver/alert'
|
10
11
|
require 'watir-webdriver/atoms'
|
11
12
|
require 'watir-webdriver/container'
|
12
13
|
require 'watir-webdriver/cookies'
|
@@ -16,6 +17,7 @@ require 'watir-webdriver/locators/text_field_locator'
|
|
16
17
|
require 'watir-webdriver/locators/child_row_locator'
|
17
18
|
require 'watir-webdriver/locators/child_cell_locator'
|
18
19
|
require 'watir-webdriver/browser'
|
20
|
+
require 'watir-webdriver/screenshot'
|
19
21
|
|
20
22
|
module Watir
|
21
23
|
@always_locate = true
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Watir
|
3
|
+
class Alert
|
4
|
+
|
5
|
+
include EventuallyPresent
|
6
|
+
|
7
|
+
def initialize(target_locator)
|
8
|
+
@target_locator = target_locator
|
9
|
+
@alert = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def text
|
13
|
+
assert_exists
|
14
|
+
@alert.text
|
15
|
+
end
|
16
|
+
|
17
|
+
def ok
|
18
|
+
assert_exists
|
19
|
+
@alert.accept
|
20
|
+
end
|
21
|
+
|
22
|
+
def close
|
23
|
+
assert_exists
|
24
|
+
@alert.dismiss
|
25
|
+
end
|
26
|
+
|
27
|
+
def set(value)
|
28
|
+
assert_exists
|
29
|
+
@alert.send_keys(value)
|
30
|
+
end
|
31
|
+
|
32
|
+
def exists?
|
33
|
+
assert_exists
|
34
|
+
true
|
35
|
+
rescue UnknownObjectException
|
36
|
+
false
|
37
|
+
end
|
38
|
+
alias_method :present?, :exists?
|
39
|
+
|
40
|
+
def selector_string
|
41
|
+
'alert'
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def assert_exists
|
47
|
+
@alert = @target_locator.alert
|
48
|
+
rescue Selenium::WebDriver::Error::NoAlertPresentError
|
49
|
+
raise UnknownObjectException, 'unable to locate alert'
|
50
|
+
end
|
51
|
+
|
52
|
+
end # Alert
|
53
|
+
end # Watir
|
@@ -102,6 +102,10 @@ module Watir
|
|
102
102
|
@driver.page_source
|
103
103
|
end
|
104
104
|
|
105
|
+
def alert
|
106
|
+
Alert.new driver.switch_to
|
107
|
+
end
|
108
|
+
|
105
109
|
def refresh
|
106
110
|
@driver.navigate.refresh
|
107
111
|
run_checkers
|
@@ -132,6 +136,19 @@ module Watir
|
|
132
136
|
@driver.switch_to.active_element.send_keys(*args)
|
133
137
|
end
|
134
138
|
|
139
|
+
#
|
140
|
+
# Handles screenshot of current pages.
|
141
|
+
#
|
142
|
+
# @example
|
143
|
+
# browser.screenshot.save("screenshot.png")
|
144
|
+
#
|
145
|
+
# @return [Watir::Screenshot]
|
146
|
+
#
|
147
|
+
|
148
|
+
def screenshot
|
149
|
+
Screenshot.new driver
|
150
|
+
end
|
151
|
+
|
135
152
|
def add_checker(checker = nil, &block)
|
136
153
|
if block_given?
|
137
154
|
@error_checkers << block
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module Watir
|
2
2
|
|
3
|
+
#
|
4
|
+
# Deprecated, use the new Alert API instead.
|
3
5
|
#
|
4
6
|
# Module provided by optional require:
|
5
7
|
#
|
@@ -20,6 +22,7 @@ module Watir
|
|
20
22
|
#
|
21
23
|
|
22
24
|
def alert(&blk)
|
25
|
+
warn 'AlertHelper is deprecated. Use the new Alert API instead (e.g. browser.alert.close)'
|
23
26
|
execute_script "window.alert = function(msg) { window.__lastWatirAlert = msg; }"
|
24
27
|
yield
|
25
28
|
execute_script "return window.__lastWatirAlert"
|
@@ -36,6 +39,7 @@ module Watir
|
|
36
39
|
# end #=> "the confirm message"
|
37
40
|
|
38
41
|
def confirm(bool, &blk)
|
42
|
+
warn 'AlertHelper is deprecated. Use the new Alert API instead (e.g. browser.confirm.close)'
|
39
43
|
execute_script "window.confirm = function(msg) { window.__lastWatirConfirm = msg; return #{!!bool} }"
|
40
44
|
yield
|
41
45
|
execute_script "return window.__lastWatirConfirm"
|
@@ -53,6 +57,7 @@ module Watir
|
|
53
57
|
#
|
54
58
|
|
55
59
|
def prompt(answer, &blk)
|
60
|
+
warn 'AlertHelper is deprecated. Use the new Alert API instead (e.g. browser.prompt.close)'
|
56
61
|
execute_script "window.prompt = function(text, value) { window.__lastWatirPrompt = { message: text, default_value: value }; return #{MultiJson.encode answer}; }"
|
57
62
|
yield
|
58
63
|
result = execute_script "return window.__lastWatirPrompt"
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module Watir
|
3
|
+
class Screenshot
|
4
|
+
|
5
|
+
def initialize(driver)
|
6
|
+
@driver = driver
|
7
|
+
end
|
8
|
+
|
9
|
+
#
|
10
|
+
# Saves screenshot to given path.
|
11
|
+
#
|
12
|
+
# @param [String] path
|
13
|
+
#
|
14
|
+
|
15
|
+
def save(path)
|
16
|
+
@driver.save_screenshot(path)
|
17
|
+
end
|
18
|
+
|
19
|
+
#
|
20
|
+
# Represents screenshot as PNG image string.
|
21
|
+
#
|
22
|
+
# @return [String]
|
23
|
+
#
|
24
|
+
|
25
|
+
def png
|
26
|
+
@driver.screenshot_as(:png)
|
27
|
+
end
|
28
|
+
|
29
|
+
#
|
30
|
+
# Represents screenshot as Base64 encoded string.
|
31
|
+
#
|
32
|
+
# @return [String]
|
33
|
+
#
|
34
|
+
|
35
|
+
def base64
|
36
|
+
@driver.screenshot_as(:base64)
|
37
|
+
end
|
38
|
+
|
39
|
+
end # Screenshot
|
40
|
+
end # Watir
|
data/spec/alert_spec.rb
CHANGED
@@ -1,49 +1,91 @@
|
|
1
1
|
require File.expand_path("watirspec/spec_helper", File.dirname(__FILE__))
|
2
|
-
require "watir-webdriver/extensions/alerts"
|
3
2
|
|
4
|
-
describe
|
3
|
+
describe 'Alert API' do
|
5
4
|
before do
|
6
5
|
browser.goto WatirSpec.url_for("alerts.html", :needs_server => true)
|
7
6
|
end
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
browser.button(:id => "alert").click
|
12
|
-
end
|
13
|
-
|
14
|
-
returned.should == "ok"
|
8
|
+
after do
|
9
|
+
browser.alert.close if browser.alert.exists?
|
15
10
|
end
|
16
11
|
|
17
|
-
|
18
|
-
|
19
|
-
|
12
|
+
context 'alert' do
|
13
|
+
describe '#text' do
|
14
|
+
it 'returns text of alert' do
|
15
|
+
browser.button(:id => 'alert').click
|
16
|
+
browser.alert.text.should == 'ok'
|
17
|
+
end
|
20
18
|
end
|
21
19
|
|
22
|
-
|
20
|
+
describe '#exists?' do
|
21
|
+
it 'returns false if alert is present' do
|
22
|
+
browser.alert.should_not exist
|
23
|
+
end
|
23
24
|
|
24
|
-
|
25
|
-
|
25
|
+
it 'returns true if alert is present' do
|
26
|
+
browser.button(:id => 'alert').click
|
27
|
+
browser.alert.should exist
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#ok' do
|
32
|
+
it 'closes alert' do
|
33
|
+
browser.button(:id => 'alert').click
|
34
|
+
browser.alert.ok
|
35
|
+
browser.alert.should_not exist
|
36
|
+
end
|
37
|
+
end
|
26
38
|
|
27
|
-
|
28
|
-
|
29
|
-
|
39
|
+
describe '#close' do
|
40
|
+
it 'closes alert' do
|
41
|
+
browser.button(:id => 'alert').click
|
42
|
+
browser.alert.close
|
43
|
+
browser.alert.should_not exist
|
44
|
+
end
|
30
45
|
end
|
31
46
|
|
32
|
-
|
47
|
+
describe 'when_present' do
|
48
|
+
it 'waits until alert is present and goes on' do
|
49
|
+
browser.button(:id => 'timeout-alert').click
|
50
|
+
browser.alert.when_present.close
|
51
|
+
browser.alert.should_not exist
|
52
|
+
end
|
33
53
|
|
34
|
-
|
54
|
+
it 'raises error if alert is not present after timeout' do
|
55
|
+
browser.button(:id => 'timeout-alert').click
|
56
|
+
lambda {
|
57
|
+
browser.alert.when_present(1).close
|
58
|
+
}.should raise_error(Watir::Wait::TimeoutError, 'timed out after 1 seconds, waiting for alert to become present')
|
59
|
+
end
|
60
|
+
end
|
35
61
|
end
|
36
62
|
|
37
|
-
|
38
|
-
|
39
|
-
|
63
|
+
context 'confirm' do
|
64
|
+
describe '#ok' do
|
65
|
+
it 'accepts confirm' do
|
66
|
+
browser.button(:id => 'confirm').click
|
67
|
+
browser.alert.ok
|
68
|
+
browser.button(:id => 'confirm').value.should == "true"
|
69
|
+
end
|
40
70
|
end
|
41
71
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
72
|
+
describe '#close' do
|
73
|
+
it 'cancels confirm' do
|
74
|
+
browser.button(:id => 'confirm').click
|
75
|
+
browser.alert.close
|
76
|
+
browser.button(:id => 'confirm').value.should == "false"
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
46
80
|
|
47
|
-
|
81
|
+
context 'prompt' do
|
82
|
+
describe '#set' do
|
83
|
+
it 'enters text to prompt' do
|
84
|
+
browser.button(:id => 'prompt').click
|
85
|
+
browser.alert.set 'My Name'
|
86
|
+
browser.alert.ok
|
87
|
+
browser.button(:id => 'prompt').value.should == 'My Name'
|
88
|
+
end
|
89
|
+
end
|
48
90
|
end
|
49
91
|
end
|
data/spec/browser_spec.rb
CHANGED
@@ -118,4 +118,10 @@ describe Watir::Browser do
|
|
118
118
|
lambda { browser.inspect }.should_not raise_error
|
119
119
|
end
|
120
120
|
end
|
121
|
+
|
122
|
+
describe '#screenshot' do
|
123
|
+
it 'returns an instance of of Watir::Screenshot' do
|
124
|
+
browser.screenshot.should be_kind_of(Watir::Screenshot)
|
125
|
+
end
|
126
|
+
end
|
121
127
|
end
|
data/spec/html/alerts.html
CHANGED
@@ -7,5 +7,6 @@
|
|
7
7
|
<input id=alert type=button onclick="alert('ok')" value=Alert>
|
8
8
|
<input id=confirm type=button onclick="this.value = confirm('set the value')" value=Confirm>
|
9
9
|
<input id=prompt type=button onclick='this.value = prompt("enter your name", "John Doe")' value=Prompt>
|
10
|
+
<input id=timeout-alert type=button onclick="setTimeout('alert(\'ok\')', 3000)" value=Timeout-Alert>
|
10
11
|
</body>
|
11
|
-
</html>
|
12
|
+
</html>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require File.expand_path("watirspec/spec_helper", File.dirname(__FILE__))
|
2
|
+
|
3
|
+
describe Watir::Screenshot do
|
4
|
+
describe '#png' do
|
5
|
+
it 'gets png representation of screenshot from WebDriver' do
|
6
|
+
browser.driver.should_receive(:screenshot_as).with(:png)
|
7
|
+
browser.screenshot.png
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe '#base64' do
|
12
|
+
it 'gets base64 representation of screenshot from WebDriver' do
|
13
|
+
browser.driver.should_receive(:screenshot_as).with(:base64)
|
14
|
+
browser.screenshot.base64
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
describe '#save' do
|
19
|
+
it 'saves screenshot to given file' do
|
20
|
+
path = "#{Dir.tmpdir}/test.png"
|
21
|
+
browser.driver.should_receive(:save_screenshot).with(path)
|
22
|
+
browser.screenshot.save(path)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watir-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: selenium-webdriver
|
@@ -171,6 +171,7 @@ files:
|
|
171
171
|
- README.md
|
172
172
|
- Rakefile
|
173
173
|
- lib/watir-webdriver.rb
|
174
|
+
- lib/watir-webdriver/alert.rb
|
174
175
|
- lib/watir-webdriver/aliases.rb
|
175
176
|
- lib/watir-webdriver/atoms.rb
|
176
177
|
- lib/watir-webdriver/atoms/README
|
@@ -223,6 +224,7 @@ files:
|
|
223
224
|
- lib/watir-webdriver/locators/element_locator.rb
|
224
225
|
- lib/watir-webdriver/locators/text_field_locator.rb
|
225
226
|
- lib/watir-webdriver/row_container.rb
|
227
|
+
- lib/watir-webdriver/screenshot.rb
|
226
228
|
- lib/watir-webdriver/user_editable.rb
|
227
229
|
- lib/watir-webdriver/version.rb
|
228
230
|
- lib/watir-webdriver/wait.rb
|
@@ -244,6 +246,7 @@ files:
|
|
244
246
|
- spec/implementation.rb
|
245
247
|
- spec/input_spec.rb
|
246
248
|
- spec/locator_spec_helper.rb
|
249
|
+
- spec/screenshot_spec.rb
|
247
250
|
- spec/spec_helper.rb
|
248
251
|
- spec/special_chars_spec.rb
|
249
252
|
- spec/wait_spec.rb
|
@@ -290,6 +293,7 @@ test_files:
|
|
290
293
|
- spec/implementation.rb
|
291
294
|
- spec/input_spec.rb
|
292
295
|
- spec/locator_spec_helper.rb
|
296
|
+
- spec/screenshot_spec.rb
|
293
297
|
- spec/spec_helper.rb
|
294
298
|
- spec/special_chars_spec.rb
|
295
299
|
- spec/wait_spec.rb
|