commonwatir 1.6.6 → 1.6.7.rc1
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/CHANGES +29 -0
- data/LICENSE +30 -18
- data/VERSION +1 -1
- data/lib/watir/element_extensions.rb +66 -0
- data/lib/watir/version.rb +4 -0
- data/lib/watir/wait.rb +41 -0
- data/lib/watir/wait_helper.rb +12 -0
- data/lib/watir/waiter.rb +6 -0
- data/lib/watir.rb +7 -1
- data/unittests/attach_to_existing_window_test.rb +0 -1
- data/unittests/buttons_test.rb +0 -1
- data/unittests/html/blankpage.html +0 -1
- data/unittests/html/buttons1.html +0 -1
- data/unittests/html/buttons2.html +0 -1
- data/unittests/html/entertainment_com.html +0 -1
- data/unittests/html/wait.html +15 -0
- data/unittests/wait_test.rb +119 -0
- metadata +20 -9
data/CHANGES
CHANGED
@@ -1,3 +1,32 @@
|
|
1
|
+
== Version 1.6.7 - 2010/10/21
|
2
|
+
|
3
|
+
=== General improvements
|
4
|
+
|
5
|
+
* added new waiting methods on Watir::Element: #when_present, #wait_until_present and #wait_while_present (Jari Bakken and Jarmo Pertman)
|
6
|
+
* added new waiting methods on Watir::IE and Watir::Firefox: #wait_until and #wait_while (Jari Bakken and Jarmo Pertman)
|
7
|
+
* added method #present? for Watir::Element (Jari Bakken and Jarmo Pertman)
|
8
|
+
* deprecated old waiting methods in Watir::Waiter which will be removed in some future version - use Watir::Wait instead (Jarmo Pertman)
|
9
|
+
|
10
|
+
=== IE improvements
|
11
|
+
|
12
|
+
* removed Watir::Simple (Željko Filipin)
|
13
|
+
* #click_no_wait was not working with frame elements. Closes http://jira.openqa.org/browse/WTR-459 (Jarmo Pertman)
|
14
|
+
|
15
|
+
=== Firefox improvements
|
16
|
+
|
17
|
+
* get_attribute_value now works with attributes named something like "foo-bar" (Alan Shields)
|
18
|
+
|
19
|
+
=== Cleanup & Maintenance
|
20
|
+
|
21
|
+
* cleaned up repo at GitHub
|
22
|
+
* merge licenses into one (Željko Filipin)
|
23
|
+
* Rakefile works now under non-Windows systems too (Alan Shields)
|
24
|
+
* Removed datahandler.rb
|
25
|
+
|
26
|
+
|
27
|
+
Whole Changelog is available at http://github.com/bret/watir/compare/v1.6.6...v1.6.7
|
28
|
+
|
29
|
+
|
1
30
|
== Version 1.6.6 - 2010/10/2
|
2
31
|
|
3
32
|
=== IE improvements
|
data/LICENSE
CHANGED
@@ -1,22 +1,34 @@
|
|
1
|
-
|
1
|
+
---------------------------------------------------------------------------
|
2
|
+
Copyright (c) 2004 - 2006, Paul Rogers
|
3
|
+
Copyright (c) 2006 - 2007, Angrez Singh
|
4
|
+
Copyright (c) 2004 - 2010, Bret Pettichord
|
5
|
+
All rights reserved.
|
2
6
|
|
3
|
-
|
7
|
+
Redistribution and use in source and binary forms, with or without
|
8
|
+
modification, are permitted provided that the following conditions are met:
|
4
9
|
|
5
|
-
|
6
|
-
|
7
|
-
'Software'), to deal in the Software without restriction, including
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
11
|
-
the following conditions:
|
10
|
+
1. Redistributions of source code must retain the above copyright notice,
|
11
|
+
this list of conditions and the following disclaimer.
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
2. Redistributions in binary form must reproduce the above copyright
|
14
|
+
notice, this list of conditions and the following disclaimer in the
|
15
|
+
documentation and/or other materials provided with the distribution.
|
15
16
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
17
|
+
3. Neither the names Paul Rogers, nor Bret Pettichord, nor Angrez Singh nor the names of any
|
18
|
+
other contributors to this software may be used to endorse or promote
|
19
|
+
products derived from this software without specific prior written
|
20
|
+
permission.
|
21
|
+
|
22
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
|
23
|
+
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
24
|
+
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
25
|
+
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
|
26
|
+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
27
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
28
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
29
|
+
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
30
|
+
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
31
|
+
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
32
|
+
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
33
|
+
--------------------------------------------------------------------------
|
34
|
+
(based on BSD Open Source License)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.6.
|
1
|
+
1.6.7.rc1
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Watir
|
4
|
+
# This assumes that Element#visible? is defined
|
5
|
+
module ElementExtensions
|
6
|
+
|
7
|
+
#
|
8
|
+
# Wraps a {Celerity,Watir}::Element so that any subsequent method calls are
|
9
|
+
# put on hold until the element is present on the page.
|
10
|
+
#
|
11
|
+
|
12
|
+
class WhenPresentDecorator
|
13
|
+
def initialize(element, timeout)
|
14
|
+
@element = element
|
15
|
+
@timeout = timeout
|
16
|
+
end
|
17
|
+
|
18
|
+
def method_missing(m, *args, &block)
|
19
|
+
unless @element.respond_to?(m)
|
20
|
+
raise NoMethodError, "undefined method `#{m}' for #{@element.inspect}:#{@element.class}"
|
21
|
+
end
|
22
|
+
|
23
|
+
Watir::Wait.until(@timeout) { @element.present? }
|
24
|
+
@element.send(m, *args, &block)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
#
|
29
|
+
# Returns true if the element exists and is visible on the page
|
30
|
+
#
|
31
|
+
|
32
|
+
def present?
|
33
|
+
exists? && visible?
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
# Waits until the element is present.
|
38
|
+
#
|
39
|
+
# Optional argument:
|
40
|
+
#
|
41
|
+
# timeout - seconds to wait before timing out (default: 60)
|
42
|
+
#
|
43
|
+
# browser.button(:id, 'foo').when_present.click
|
44
|
+
# browser.div(:id, 'bar').when_present { |div| ... }
|
45
|
+
# browser.p(:id, 'baz').when_present(60).text
|
46
|
+
#
|
47
|
+
|
48
|
+
def when_present(timeout = 60)
|
49
|
+
if block_given?
|
50
|
+
Watir::Wait.until(timeout) { self.present? }
|
51
|
+
yield self
|
52
|
+
else
|
53
|
+
return WhenPresentDecorator.new(self, timeout)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def wait_until_present(timeout = 60)
|
58
|
+
Watir::Wait.until(timeout) { self.present? }
|
59
|
+
end
|
60
|
+
|
61
|
+
def wait_while_present(timeout = 60)
|
62
|
+
Watir::Wait.while(timeout) { self.present? }
|
63
|
+
end
|
64
|
+
|
65
|
+
end # module ElementExtensions
|
66
|
+
end
|
data/lib/watir/wait.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Watir
|
4
|
+
module Wait
|
5
|
+
extend self
|
6
|
+
|
7
|
+
class TimeoutError < StandardError
|
8
|
+
end
|
9
|
+
|
10
|
+
#
|
11
|
+
# Wait until the block evaluates to true or times out.
|
12
|
+
#
|
13
|
+
|
14
|
+
def until(timeout = 60, &block)
|
15
|
+
end_time = ::Time.now + timeout
|
16
|
+
|
17
|
+
until ::Time.now > end_time
|
18
|
+
result = yield(self)
|
19
|
+
return result if result
|
20
|
+
sleep 0.1
|
21
|
+
end
|
22
|
+
|
23
|
+
raise TimeoutError, "timed out after #{timeout} seconds"
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
# Wait while the block evaluates to true or times out.
|
28
|
+
#
|
29
|
+
def while(timeout = 60, &block)
|
30
|
+
end_time = ::Time.now + timeout
|
31
|
+
|
32
|
+
until ::Time.now > end_time
|
33
|
+
return unless yield(self)
|
34
|
+
sleep 0.1
|
35
|
+
end
|
36
|
+
|
37
|
+
raise TimeoutError, "timed out after #{timeout} seconds"
|
38
|
+
end
|
39
|
+
|
40
|
+
end # Wait
|
41
|
+
end # Watir
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# include this module if there's a need to have wait_until and wait_while methods in some different scope
|
2
|
+
module Watir
|
3
|
+
module WaitHelper
|
4
|
+
def wait_until(*args, &blk)
|
5
|
+
Wait.until(*args, &blk)
|
6
|
+
end
|
7
|
+
|
8
|
+
def wait_while(*args, &blk)
|
9
|
+
Wait.while(*args, &blk)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/watir/waiter.rb
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
#######
|
2
|
+
#
|
3
|
+
# Using Watir::Waiter is DEPRECATED and will be removed in some newer version of Watir! Use Watir::Wait and Watir::ElementExtensions methods instead!
|
4
|
+
#
|
5
|
+
#######
|
1
6
|
require 'watir/exceptions'
|
2
7
|
|
3
8
|
module Watir
|
@@ -37,6 +42,7 @@ class Waiter
|
|
37
42
|
|
38
43
|
def initialize(timeout=@@default_timeout,
|
39
44
|
polling_interval=@@default_polling_interval)
|
45
|
+
Kernel.warn "Using Watir::Waiter is DEPRECATED and will be removed in some newer version of Watir! Use Watir::Wait and Watir::ElementExtensions methods instead!"
|
40
46
|
@timeout = timeout
|
41
47
|
@polling_interval = polling_interval
|
42
48
|
@timer = TimeKeeper.new
|
data/lib/watir.rb
CHANGED
@@ -3,5 +3,11 @@
|
|
3
3
|
# implementations. The 'watir/browser' library will autoload the actual
|
4
4
|
# implementations.
|
5
5
|
|
6
|
-
require 'watir/
|
6
|
+
require 'watir/version'
|
7
|
+
require 'watir/waiter' # this will be removed in some future version
|
8
|
+
require 'watir/wait'
|
9
|
+
require 'watir/wait_helper'
|
10
|
+
require 'watir/element_extensions'
|
11
|
+
require 'watir/exceptions'
|
12
|
+
require 'watir/matches'
|
7
13
|
require 'watir/browser'
|
data/unittests/buttons_test.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Wait Tests</title>
|
4
|
+
<script type="text/javascript">
|
5
|
+
function toggleDiv() {
|
6
|
+
var divStyle = document.getElementById('div1').style;
|
7
|
+
divStyle.display = divStyle.display == "none" ? "" : "none";
|
8
|
+
}
|
9
|
+
</script>
|
10
|
+
</head>
|
11
|
+
|
12
|
+
<div id="div1">div1</div>
|
13
|
+
<a id="link1" href="javascript:void(0)" onclick="javascript:setTimeout(toggleDiv, 500);">Click me!</a>
|
14
|
+
|
15
|
+
</html>
|
@@ -0,0 +1,119 @@
|
|
1
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') unless $SETUP_LOADED
|
2
|
+
require 'unittests/setup'
|
3
|
+
|
4
|
+
class Wait < Test::Unit::TestCase
|
5
|
+
include Watir::Exception
|
6
|
+
location __FILE__
|
7
|
+
|
8
|
+
def setup
|
9
|
+
uses_page "wait.html"
|
10
|
+
browser.refresh
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_wait_until
|
14
|
+
div = browser.div(:id => "div1")
|
15
|
+
assert div.visible?
|
16
|
+
browser.link(:id => "link1").click
|
17
|
+
|
18
|
+
browser.wait_until(2) {not div.visible?}
|
19
|
+
assert !div.visible?
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_wait_until_exception
|
23
|
+
assert_raises(Watir::Wait::TimeoutError) {browser.wait_until(0.1) {false}}
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_wait_while
|
27
|
+
div = browser.div(:id => "div1")
|
28
|
+
assert div.visible?
|
29
|
+
browser.link(:id => "link1").click
|
30
|
+
|
31
|
+
browser.wait_while(2) {div.visible?}
|
32
|
+
assert !div.visible?
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_wait_while_exception
|
36
|
+
assert_raises(Watir::Wait::TimeoutError) {browser.wait_while(0.1) {true}}
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_present?
|
40
|
+
div = browser.div(:id => "div1")
|
41
|
+
assert div.exists?
|
42
|
+
assert div.visible?
|
43
|
+
assert div.present?
|
44
|
+
|
45
|
+
browser.link(:id => "link1").click
|
46
|
+
browser.wait_until(2) {!div.visible?}
|
47
|
+
assert div.exists?
|
48
|
+
assert !div.visible?
|
49
|
+
assert !div.present?
|
50
|
+
|
51
|
+
non_existing_div = browser.div(:id => "non-existing")
|
52
|
+
assert !non_existing_div.exists?
|
53
|
+
assert_raises(Watir::Exception::UnknownObjectException) {non_existing_div.visible?}
|
54
|
+
assert !non_existing_div.present?
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_when_present
|
58
|
+
browser.link(:id => "link1").click
|
59
|
+
div = browser.div(:id => "div1")
|
60
|
+
assert_equal "div1", div.when_present(2).text
|
61
|
+
assert div.visible?
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_when_present_block
|
65
|
+
browser.link(:id => "link1").click
|
66
|
+
div = browser.div(:id => "div1")
|
67
|
+
div.when_present(2) do |d|
|
68
|
+
assert_equal "div1", d.text
|
69
|
+
end
|
70
|
+
assert div.visible?
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_when_present_exceptions
|
74
|
+
assert_raises(NoMethodError) {browser.div(:id => "div1").when_present(0.1).non_existing_method}
|
75
|
+
assert_raises(Watir::Wait::TimeoutError) {browser.div(:id => "non-existing").when_present(0.1).text}
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_wait_until_present
|
79
|
+
browser.link(:id => "link1").click
|
80
|
+
|
81
|
+
div = browser.div(:id => "div1")
|
82
|
+
browser.link(:id => "link1").click
|
83
|
+
div.wait_until_present(2)
|
84
|
+
assert div.visible?
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_wait_until_present_exception
|
88
|
+
assert_raises(Watir::Wait::TimeoutError) {browser.div(:id => "non-existing").wait_until_present(0.1)}
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_wait_while_present
|
92
|
+
div = browser.div(:id => "div1")
|
93
|
+
browser.link(:id => "link1").click
|
94
|
+
div.wait_while_present(2)
|
95
|
+
assert !div.visible?
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_wait_while_present_exception
|
99
|
+
assert_raises(Watir::Wait::TimeoutError) {browser.div(:id => "div1").wait_while_present(0.1)}
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_wait_module_until
|
103
|
+
div = browser.div(:id => "div1")
|
104
|
+
assert div.visible?
|
105
|
+
browser.link(:id => "link1").click
|
106
|
+
|
107
|
+
Watir::Wait.until(2) {not div.visible?}
|
108
|
+
assert !div.visible?
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_wait_module_while
|
112
|
+
div = browser.div(:id => "div1")
|
113
|
+
assert div.visible?
|
114
|
+
browser.link(:id => "link1").click
|
115
|
+
|
116
|
+
Watir::Wait.while(2) {div.visible?}
|
117
|
+
assert !div.visible?
|
118
|
+
end
|
119
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: commonwatir
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 977940594
|
5
|
+
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
|
9
|
+
- 7
|
10
|
+
- rc1
|
11
|
+
version: 1.6.7.rc1
|
11
12
|
platform: ruby
|
12
13
|
authors:
|
13
14
|
- Bret Pettichord
|
@@ -15,7 +16,7 @@ autorequire:
|
|
15
16
|
bindir: bin
|
16
17
|
cert_chain: []
|
17
18
|
|
18
|
-
date: 2010-10-
|
19
|
+
date: 2010-10-21 00:00:00 -06:00
|
19
20
|
default_executable:
|
20
21
|
dependencies:
|
21
22
|
- !ruby/object:Gem::Dependency
|
@@ -44,11 +45,15 @@ files:
|
|
44
45
|
- lib/watir/assertions.rb
|
45
46
|
- lib/watir/browser.rb
|
46
47
|
- lib/watir/browsers.rb
|
48
|
+
- lib/watir/element_extensions.rb
|
47
49
|
- lib/watir/exceptions.rb
|
48
50
|
- lib/watir/matches.rb
|
49
51
|
- lib/watir/options.rb
|
50
52
|
- lib/watir/testcase.rb
|
53
|
+
- lib/watir/version.rb
|
54
|
+
- lib/watir/wait.rb
|
51
55
|
- lib/watir/waiter.rb
|
56
|
+
- lib/watir/wait_helper.rb
|
52
57
|
- lib/watir.rb
|
53
58
|
- Rakefile
|
54
59
|
- LICENSE
|
@@ -77,6 +82,7 @@ files:
|
|
77
82
|
- unittests/html/select_lists.html
|
78
83
|
- unittests/html/utf8.html
|
79
84
|
- unittests/html/visibility.html
|
85
|
+
- unittests/html/wait.html
|
80
86
|
- unittests/html/watir_unit_tests.css
|
81
87
|
- unittests/html/whitespace.html
|
82
88
|
- unittests/inspect_test.rb
|
@@ -93,6 +99,7 @@ files:
|
|
93
99
|
- unittests/strong_test.rb
|
94
100
|
- unittests/utf8_test.rb
|
95
101
|
- unittests/visibility_test.rb
|
102
|
+
- unittests/wait_test.rb
|
96
103
|
- unittests/whitespace_test.rb
|
97
104
|
has_rdoc: true
|
98
105
|
homepage: http://www.watir.com
|
@@ -116,12 +123,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
123
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
124
|
none: false
|
118
125
|
requirements:
|
119
|
-
- - "
|
126
|
+
- - ">"
|
120
127
|
- !ruby/object:Gem::Version
|
121
|
-
hash:
|
128
|
+
hash: 25
|
122
129
|
segments:
|
123
|
-
-
|
124
|
-
|
130
|
+
- 1
|
131
|
+
- 3
|
132
|
+
- 1
|
133
|
+
version: 1.3.1
|
125
134
|
requirements: []
|
126
135
|
|
127
136
|
rubyforge_project: wtr
|
@@ -152,6 +161,7 @@ test_files:
|
|
152
161
|
- unittests/html/select_lists.html
|
153
162
|
- unittests/html/utf8.html
|
154
163
|
- unittests/html/visibility.html
|
164
|
+
- unittests/html/wait.html
|
155
165
|
- unittests/html/watir_unit_tests.css
|
156
166
|
- unittests/html/whitespace.html
|
157
167
|
- unittests/inspect_test.rb
|
@@ -168,4 +178,5 @@ test_files:
|
|
168
178
|
- unittests/strong_test.rb
|
169
179
|
- unittests/utf8_test.rb
|
170
180
|
- unittests/visibility_test.rb
|
181
|
+
- unittests/wait_test.rb
|
171
182
|
- unittests/whitespace_test.rb
|