watir-webdriver 0.1.8 → 0.1.9

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/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009-2010 Jari Bakken
1
+ Copyright (c) 2009-2011 Jari Bakken
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.rdoc CHANGED
@@ -52,4 +52,4 @@ Specs specific to watir-webdriver are found in spec/*_spec.rb, with watirspec in
52
52
 
53
53
  == Copyright
54
54
 
55
- Copyright (c) 2009-2010 Jari Bakken. See LICENSE for details.
55
+ Copyright (c) 2009-2011 Jari Bakken. See LICENSE for details.
@@ -1,18 +1,19 @@
1
1
  # encoding: utf-8
2
- require "selenium-webdriver"
3
- require "json"
2
+ require 'selenium-webdriver'
3
+ require 'json'
4
4
 
5
- require "watir-webdriver/version"
6
- require "watir-webdriver/exception"
7
- require "watir-webdriver/xpath_support"
8
- require "watir-webdriver/window_switching"
9
- require "watir-webdriver/container"
10
- require "watir-webdriver/locators/element_locator"
11
- require "watir-webdriver/locators/button_locator"
12
- require "watir-webdriver/locators/text_field_locator"
13
- require "watir-webdriver/locators/child_row_locator"
14
- require "watir-webdriver/locators/child_cell_locator"
15
- require "watir-webdriver/browser"
5
+ require 'watir-webdriver/version'
6
+ require 'watir-webdriver/wait'
7
+ require 'watir-webdriver/exception'
8
+ require 'watir-webdriver/xpath_support'
9
+ require 'watir-webdriver/window_switching'
10
+ require 'watir-webdriver/container'
11
+ require 'watir-webdriver/locators/element_locator'
12
+ require 'watir-webdriver/locators/button_locator'
13
+ require 'watir-webdriver/locators/text_field_locator'
14
+ require 'watir-webdriver/locators/child_row_locator'
15
+ require 'watir-webdriver/locators/child_cell_locator'
16
+ require 'watir-webdriver/browser'
16
17
 
17
18
  module Watir
18
19
  include Selenium
@@ -29,40 +30,33 @@ module Watir
29
30
 
30
31
  end
31
32
 
32
- require "watir-webdriver/attribute_helper"
33
- require "watir-webdriver/row_container"
34
- require "watir-webdriver/cell_container"
35
- require "watir-webdriver/element_collection"
36
- require "watir-webdriver/elements/element"
37
- require "watir-webdriver/elements/generated"
38
- require "watir-webdriver/elements/frame"
39
- require "watir-webdriver/elements/input"
40
- require "watir-webdriver/elements/button"
41
- require "watir-webdriver/elements/checkbox"
42
- require "watir-webdriver/elements/file_field"
43
- require "watir-webdriver/elements/image"
44
- require "watir-webdriver/elements/link"
45
- require "watir-webdriver/elements/font"
46
- require "watir-webdriver/elements/radio"
47
- require "watir-webdriver/elements/text_field"
48
- require "watir-webdriver/elements/hidden"
49
- require "watir-webdriver/elements/select"
50
- require "watir-webdriver/elements/form"
51
- require "watir-webdriver/elements/option"
52
- require "watir-webdriver/elements/table"
53
- require "watir-webdriver/elements/table_row"
54
- require "watir-webdriver/elements/table_cell"
55
- require "watir-webdriver/elements/table_section"
33
+ require 'watir-webdriver/attribute_helper'
34
+ require 'watir-webdriver/row_container'
35
+ require 'watir-webdriver/cell_container'
36
+ require 'watir-webdriver/element_collection'
37
+ require 'watir-webdriver/elements/element'
38
+ require 'watir-webdriver/elements/generated'
39
+ require 'watir-webdriver/elements/frame'
40
+ require 'watir-webdriver/elements/input'
41
+ require 'watir-webdriver/elements/button'
42
+ require 'watir-webdriver/elements/checkbox'
43
+ require 'watir-webdriver/elements/file_field'
44
+ require 'watir-webdriver/elements/image'
45
+ require 'watir-webdriver/elements/link'
46
+ require 'watir-webdriver/elements/font'
47
+ require 'watir-webdriver/elements/radio'
48
+ require 'watir-webdriver/elements/text_field'
49
+ require 'watir-webdriver/elements/hidden'
50
+ require 'watir-webdriver/elements/select'
51
+ require 'watir-webdriver/elements/form'
52
+ require 'watir-webdriver/elements/option'
53
+ require 'watir-webdriver/elements/table'
54
+ require 'watir-webdriver/elements/table_row'
55
+ require 'watir-webdriver/elements/table_cell'
56
+ require 'watir-webdriver/elements/table_section'
56
57
 
57
58
  Watir.tag_to_class.freeze
58
59
 
59
- module Watir
60
- module Container
61
-
62
- end # Container
63
- end # Watir
64
-
65
-
66
60
  # undefine deprecated methods to use them for Element attributes
67
61
  class Object
68
62
  undef_method :id if method_defined? "id"
@@ -115,6 +115,10 @@ module Watir
115
115
  wrap_elements_in(returned)
116
116
  end
117
117
 
118
+ def send_keys(*args)
119
+ @driver.switch_to.active_element.send_keys(*args)
120
+ end
121
+
118
122
  def add_checker(checker = nil, &block)
119
123
  if block_given?
120
124
  @error_checkers << block
@@ -7,10 +7,12 @@ module Watir
7
7
  #
8
8
 
9
9
  class Element
10
+ extend AttributeHelper
11
+
10
12
  include Exception
11
13
  include Container
12
14
  include Selenium
13
- extend AttributeHelper
15
+ include EventuallyPresent
14
16
 
15
17
  def initialize(parent, selector)
16
18
  @parent = parent
@@ -157,11 +159,25 @@ module Watir
157
159
  end
158
160
  alias_method :wd, :element # ensures duck typing with Browser
159
161
 
162
+ #
163
+ # Returns true if this element is visible on the page
164
+ #
165
+
160
166
  def visible?
161
167
  assert_exists
162
168
  @element.displayed?
163
169
  end
164
170
 
171
+ #
172
+ # Returns true if the element exists and is visible on the page
173
+ #
174
+ # @see Watir::Wait
175
+ #
176
+
177
+ def present?
178
+ exists? && visible?
179
+ end
180
+
165
181
  def style(property = nil)
166
182
  if property
167
183
  assert_exists
@@ -69,18 +69,23 @@ module Watir
69
69
  @element = element
70
70
  @driver = driver
71
71
  end
72
-
72
+
73
73
  def ==(other)
74
74
  @element == other.element
75
75
  end
76
76
  alias_method :eql?, :==
77
-
77
+
78
+ def send_keys(*args)
79
+ switch!
80
+ @driver.switch_to.active_element.send_keys(*args)
81
+ end
82
+
78
83
  protected
79
-
84
+
80
85
  def element
81
86
  @element
82
87
  end
83
-
88
+
84
89
  private
85
90
 
86
91
  def method_missing(meth, *args, &blk)
@@ -1,141 +1 @@
1
- # encoding: utf-8
2
- module Watir
3
-
4
- #
5
- # Module provided by optional require:
6
- #
7
- # require "watir-webdriver/extensions/wait"
8
- #
9
-
10
- module Wait
11
- module_function
12
-
13
- class TimeoutError < StandardError
14
- end
15
-
16
- #
17
- # Wait until the block evaluates to true or times out.
18
- #
19
-
20
- def until(timeout = 30, &block)
21
- end_time = ::Time.now + timeout
22
-
23
- until ::Time.now > end_time
24
- result = yield(self)
25
- return result if result
26
- sleep 0.5
27
- end
28
-
29
- raise TimeoutError, "timed out after #{timeout} seconds"
30
- end
31
-
32
- #
33
- # Wait while the block evaluates to true or times out.
34
- #
35
-
36
- def while(timeout = 30, &block)
37
- end_time = ::Time.now + timeout
38
-
39
- until ::Time.now > end_time
40
- return unless yield(self)
41
- sleep 0.5
42
- end
43
-
44
- raise TimeoutError, "timed out after #{timeout} seconds"
45
- end
46
-
47
- end # Wait
48
-
49
- #
50
- # Wraps an Element so that any subsequent method calls are
51
- # put on hold until the element is present (exists and is visible) on the page.
52
- #
53
-
54
- class WhenPresentDecorator
55
- def initialize(element, timeout)
56
- @element = element
57
- @timeout = timeout
58
- end
59
-
60
- def method_missing(m, *args, &block)
61
- unless @element.respond_to?(m)
62
- raise NoMethodError, "undefined method `#{m}' for #{@element.inspect}:#{@element.class}"
63
- end
64
-
65
- Watir::Wait.until(@timeout) { @element.present? }
66
-
67
- @element.__send__(m, *args, &block)
68
- end
69
- end # WhenPresentDecorator
70
-
71
- class Element
72
-
73
- #
74
- # Returns true if the element exists and is visible on the page
75
- #
76
- # This method is provided by an optional require.
77
- # @see Watir::Wait
78
- #
79
-
80
- def present?
81
- exists? && visible?
82
- end
83
-
84
- #
85
- # Waits until the element is present.
86
- #
87
- # This method is provided by an optional require.
88
- # @see Watir::Wait
89
- #
90
- # Example:
91
- # browser.button(:id, 'foo').when_present.click
92
- # browser.div(:id, 'bar').when_present { |div| ... }
93
- # browser.p(:id, 'baz').when_present(60).text
94
- #
95
- # @param [Integer] timeout seconds to wait before timing out
96
- #
97
-
98
- def when_present(timeout = 30)
99
- if block_given?
100
- Watir::Wait.until(timeout) { self.present? }
101
- yield self
102
- else
103
- WhenPresentDecorator.new(self, timeout)
104
- end
105
- end
106
-
107
- #
108
- # Waits until the element is present.
109
- #
110
- # This method is provided by an optional require.
111
- #
112
- # @param [Integer] timeout seconds to wait before timing out
113
- #
114
- # @see Watir::Wait
115
- # @see Watir::Element#present?
116
- #
117
-
118
- def wait_until_present(timeout = 30)
119
- Watir::Wait.until(timeout) { self.present? }
120
- end
121
-
122
- #
123
- # Waits while the element is present.
124
- #
125
- # This method is provided by an optional require.
126
- #
127
- # @param [Integer] timeout seconds to wait before timing out
128
- #
129
- # @see Watir::Wait
130
- # @see Watir::Element#present?
131
- #
132
-
133
- def wait_while_present(timeout = 30)
134
- Watir::Wait.while(timeout) { self.present? }
135
- rescue Selenium::WebDriver::Error::ObsoleteElementError
136
- # it's not present
137
- end
138
- end # Element
139
-
140
-
141
- end # Watir
1
+ warn "wait helpers are now loaded by default, please remove require of 'watir-webdriver/extensions/wait'"
@@ -1,3 +1,3 @@
1
1
  module Watir
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.9"
3
3
  end
@@ -0,0 +1,137 @@
1
+ # encoding: utf-8
2
+ module Watir
3
+
4
+ module Wait
5
+
6
+ class TimeoutError < StandardError
7
+ end
8
+
9
+ class << self
10
+ #
11
+ # Wait until the block evaluates to true or times out.
12
+ #
13
+
14
+ def until(timeout = 30, message = nil, &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.5
21
+ end
22
+
23
+ raise TimeoutError, message_for(timeout, message)
24
+ end
25
+
26
+ #
27
+ # Wait while the block evaluates to true or times out.
28
+ #
29
+
30
+ def while(timeout = 30, message = nil, &block)
31
+ end_time = ::Time.now + timeout
32
+
33
+ until ::Time.now > end_time
34
+ return unless yield(self)
35
+ sleep 0.5
36
+ end
37
+
38
+ raise TimeoutError, message_for(timeout, message)
39
+ end
40
+
41
+ private
42
+
43
+ def message_for(timeout, message)
44
+ err = "timed out after #{timeout} seconds"
45
+ err << ", #{message}" if message
46
+
47
+ err
48
+ end
49
+ end # class << self
50
+ end # Wait
51
+
52
+ #
53
+ # Wraps an Element so that any subsequent method calls are
54
+ # put on hold until the element is present (exists and is visible) on the page.
55
+ #
56
+
57
+ class WhenPresentDecorator
58
+ def initialize(element, timeout, message = nil)
59
+ @element = element
60
+ @timeout = timeout
61
+ @message = message
62
+ end
63
+
64
+ def method_missing(m, *args, &block)
65
+ unless @element.respond_to?(m)
66
+ raise NoMethodError, "undefined method `#{m}' for #{@element.inspect}:#{@element.class}"
67
+ end
68
+
69
+ Watir::Wait.until(@timeout, @message) { @element.present? }
70
+
71
+ @element.__send__(m, *args, &block)
72
+ end
73
+ end # WhenPresentDecorator
74
+
75
+ #
76
+ # Convenience methods for things that eventually become present.
77
+ #
78
+ # Includers should implement a public #present? and a (possibly private) #selector_string method.
79
+ #
80
+
81
+ module EventuallyPresent
82
+ #
83
+ # Waits until the element is present.
84
+ #
85
+ # @see Watir::Wait
86
+ #
87
+ # Example:
88
+ # browser.button(:id, 'foo').when_present.click
89
+ # browser.div(:id, 'bar').when_present { |div| ... }
90
+ # browser.p(:id, 'baz').when_present(60).text
91
+ #
92
+ # @param [Integer] timeout seconds to wait before timing out
93
+ #
94
+
95
+ def when_present(timeout = 30)
96
+ message = "waiting for #{selector_string} to become present"
97
+
98
+ if block_given?
99
+ Watir::Wait.until(timeout, message) { present? }
100
+ yield self
101
+ else
102
+ WhenPresentDecorator.new(self, timeout, message)
103
+ end
104
+ end
105
+
106
+ #
107
+ # Waits until the element is present.
108
+ #
109
+ # @param [Integer] timeout seconds to wait before timing out
110
+ #
111
+ # @see Watir::Wait
112
+ # @see Watir::Element#present?
113
+ #
114
+
115
+ def wait_until_present(timeout = 30)
116
+ message = "waiting for #{selector_string} to become present"
117
+ Watir::Wait.until(timeout, message) { present? }
118
+ end
119
+
120
+ #
121
+ # Waits while the element is present.
122
+ #
123
+ # @param [Integer] timeout seconds to wait before timing out
124
+ #
125
+ # @see Watir::Wait
126
+ # @see Watir::Element#present?
127
+ #
128
+
129
+ def wait_while_present(timeout = 30)
130
+ message = "waiting for #{selector_string} to disappear"
131
+ Watir::Wait.while(timeout, message) { present? }
132
+ rescue Selenium::WebDriver::Error::ObsoleteElementError
133
+ # it's not present
134
+ end
135
+
136
+ end # EventuallyPresent
137
+ end # Watir
@@ -5,7 +5,7 @@ module Watir
5
5
  end
6
6
 
7
7
  def windows(*args)
8
- all = @driver.window_handles.map { |id| Window.new(@driver, id) }
8
+ all = @driver.window_handles.map { |handle| Window.new(@driver, :handle => handle) }
9
9
 
10
10
  if args.empty?
11
11
  all
@@ -15,13 +15,11 @@ module Watir
15
15
  end
16
16
 
17
17
  def window(*args, &blk)
18
- win = filter_windows(args, windows, :find)
18
+ win = Window.new @driver, extract_selector(args)
19
19
 
20
- if win && block_given?
21
- win.use(&blk)
22
- end
20
+ win.use(&blk) if block_given?
23
21
 
24
- win or raise NoMatchingWindowFoundException, args.inspect
22
+ win
25
23
  end
26
24
 
27
25
  private
@@ -29,10 +27,6 @@ module Watir
29
27
  def filter_windows(args, all, method)
30
28
  sel = extract_selector(args)
31
29
 
32
- if sel.empty?
33
- all.find { |w| w.current? }
34
- end
35
-
36
30
  unless sel.keys.all? { |k| [:title, :url].include? k }
37
31
  raise ArgumentError, "invalid window selector: #{sel.inspect}"
38
32
  end
@@ -44,27 +38,48 @@ module Watir
44
38
  end # WindowSwitching
45
39
 
46
40
  class Window
47
- def initialize(driver, id)
48
- @driver, @id = driver, id
41
+ include EventuallyPresent
42
+
43
+ def initialize(driver, selector)
44
+ @driver = driver
45
+ @selector = selector
46
+
47
+ if selector.empty?
48
+ @handle = driver.window_handle
49
+ elsif selector.has_key? :handle
50
+ @handle = selector.delete :handle
51
+ else
52
+ unless selector.keys.all? { |k| [:title, :url].include? k }
53
+ raise ArgumentError, "invalid window selector: #{selector.inspect}"
54
+ end
55
+ end
49
56
  end
50
57
 
51
58
  def inspect
52
- '#<%s:0x%x id=%s>' % [self.class, hash*2, @id.to_s]
59
+ '#<%s:0x%x located=%s>' % [self.class, hash*2, !!@handle]
53
60
  end
54
61
 
62
+ def exists?
63
+ handle
64
+ true
65
+ rescue NoMatchingWindowFoundException
66
+ false
67
+ end
68
+ alias_method :present?, :exists? # for Wait::EventuallyPresent
69
+
55
70
  def ==(other)
56
71
  return false unless other.kind_of?(self.class)
57
72
 
58
- @id == other.id
73
+ handle == other.handle
59
74
  end
60
75
  alias_method :eql?, :==
61
76
 
62
77
  def hash
63
- @id.hash ^ self.class.hash
78
+ handle.hash ^ self.class.hash
64
79
  end
65
80
 
66
81
  def current?
67
- @driver.window_handle == @id
82
+ @driver.window_handle == handle
68
83
  end
69
84
 
70
85
  def close
@@ -91,14 +106,37 @@ module Watir
91
106
  return self
92
107
  end
93
108
 
94
- @driver.switch_to.window(@id, &blk)
109
+ @driver.switch_to.window(handle, &blk)
95
110
  self
96
111
  end
97
112
 
98
113
  protected
99
114
 
100
- def id
101
- @id
115
+ def handle
116
+ @handle ||= locate
117
+ end
118
+
119
+ private
120
+
121
+ def selector_string
122
+ @selector.inspect
123
+ end
124
+
125
+ def locate
126
+ handle = @driver.window_handles.find { |handle|
127
+ matches?(handle)
128
+ }
129
+
130
+ handle or raise NoMatchingWindowFoundException, @selector.inspect
131
+ end
132
+
133
+ def matches?(handle)
134
+ @driver.switch_to.window(handle) {
135
+ matches_title = @selector[:title].nil? || @selector[:title] === @driver.title
136
+ matches_url = @selector[:url].nil? || @selector[:url] === @driver.current_url
137
+
138
+ matches_title && matches_url
139
+ }
102
140
  end
103
141
 
104
142
  end # Window
data/spec/browser_spec.rb CHANGED
@@ -47,6 +47,25 @@ describe Watir::Browser do
47
47
  end
48
48
  end
49
49
 
50
+ describe "#send_key{,s}" do
51
+ it "sends keystrokes to the active element" do
52
+ browser.goto WatirSpec.files + "/forms_with_input_elements.html"
53
+
54
+ browser.send_keys "hello"
55
+ browser.text_field(:id => "new_user_first_name").value.should == "hello"
56
+ end
57
+
58
+ it "sends keys to a frame" do
59
+ browser.goto WatirSpec.files + "/frames.html"
60
+ tf = browser.frame.text_field(:id => "senderElement")
61
+ tf.clear
62
+
63
+ browser.frame.send_keys "hello"
64
+
65
+ tf.value.should == "hello"
66
+ end
67
+ end
68
+
50
69
  bug "http://github.com/jarib/watirspec/issues/issue/8", [:webdriver, :ie], [:webdriver, :chrome] do
51
70
  it "raises an error when trying to interact with a closed browser" do
52
71
  b = WatirSpec.new_browser
data/spec/element_spec.rb CHANGED
@@ -10,4 +10,22 @@ describe Watir::Element do
10
10
  end
11
11
  end
12
12
 
13
+ describe "#present?" do
14
+ before do
15
+ browser.goto("file://" + File.expand_path("html/wait.html", File.dirname(__FILE__)))
16
+ end
17
+
18
+ it "returns true if the element exists and is visible" do
19
+ browser.div(:id, 'foo').should be_present
20
+ end
21
+
22
+ it "returns false if the element exists but is not visible" do
23
+ browser.div(:id, 'bar').should_not be_present
24
+ end
25
+
26
+ it "returns false if the element does not exist" do
27
+ browser.div(:id, 'should-not-exist').should_not be_present
28
+ end
29
+ end
30
+
13
31
  end
data/spec/wait_spec.rb CHANGED
@@ -1,29 +1,40 @@
1
1
  require File.expand_path("watirspec/spec_helper", File.dirname(__FILE__))
2
- require "watir-webdriver/extensions/wait"
3
2
 
4
3
  describe Watir::Wait do
5
4
  describe "#until" do
6
5
  it "waits until the block returns true" do
7
- Wait::until(1) { true }.should be_true
6
+ Wait.until(0.5) { true }.should be_true
8
7
  end
9
8
 
10
9
  it "times out" do
11
10
  lambda do
12
- Wait::until(1) { false }
11
+ Wait.until(0.5) { false }
13
12
  end.should raise_error(Watir::Wait::TimeoutError)
14
13
  end
14
+
15
+ it "times out with a custom message" do
16
+ lambda do
17
+ Wait.until(0.5, "oops") { false }
18
+ end.should raise_error(Watir::Wait::TimeoutError, "timed out after 0.5 seconds, oops")
19
+ end
15
20
  end
16
21
 
17
22
  describe "#while" do
18
23
  it "waits while the block returns true" do
19
- Wait::while(1) { false }.should == nil
24
+ Wait.while(0.5) { false }.should == nil
20
25
  end
21
26
 
22
27
  it "times out" do
23
28
  lambda do
24
- Wait::while(1) { true }
29
+ Wait.while(0.5) { true }
25
30
  end.should raise_error(Watir::Wait::TimeoutError)
26
31
  end
32
+
33
+ it "times out with a custom message" do
34
+ lambda do
35
+ Wait.while(0.5, "oops") { true }
36
+ end.should raise_error(Watir::Wait::TimeoutError, "timed out after 0.5 seconds, oops")
37
+ end
27
38
  end
28
39
  end
29
40
 
@@ -33,20 +44,6 @@ describe Watir::Element do
33
44
  browser.goto("file://" + File.expand_path("html/wait.html", File.dirname(__FILE__)))
34
45
  end
35
46
 
36
- describe "#present?" do
37
- it "returns true if the element exists and is visible" do
38
- browser.div(:id, 'foo').should be_present
39
- end
40
-
41
- it "returns false if the element exists but is not visible" do
42
- browser.div(:id, 'bar').should_not be_present
43
- end
44
-
45
- it "returns false if the element does not exist" do
46
- browser.div(:id, 'should-not-exist').should_not be_present
47
- end
48
- end
49
-
50
47
  describe "#when_present" do
51
48
  it "yields when the element becomes present" do
52
49
  called = false
@@ -74,7 +71,7 @@ describe Watir::Element do
74
71
  it "times out when not given a block" do
75
72
  lambda {
76
73
  browser.div(:id, 'bar').when_present(1).click
77
- }.should raise_error(Watir::Wait::TimeoutError)
74
+ }.should raise_error(Watir::Wait::TimeoutError, 'timed out after 1 seconds, waiting for {:id=>"bar", :tag_name=>"div"} to become present')
78
75
  end
79
76
  end
80
77
 
@@ -87,7 +84,7 @@ describe Watir::Element do
87
84
  it "times out if the element doesn't appear" do
88
85
  lambda do
89
86
  browser.div(:id, 'bar').wait_until_present(1)
90
- end.should raise_error(Watir::Wait::TimeoutError)
87
+ end.should raise_error(Watir::Wait::TimeoutError, 'timed out after 1 seconds, waiting for {:id=>"bar", :tag_name=>"div"} to become present')
91
88
  end
92
89
  end
93
90
 
@@ -105,7 +102,7 @@ describe Watir::Element do
105
102
  it "times out" do
106
103
  lambda do
107
104
  browser.div(:id, 'foo').wait_while_present(1)
108
- end.should raise_error(Watir::Wait::TimeoutError)
105
+ end.should raise_error(Watir::Wait::TimeoutError, 'timed out after 1 seconds, waiting for {:id=>"foo", :tag_name=>"div"} to disappear')
109
106
  end
110
107
  end
111
108
 
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.add_dependency "selenium-webdriver", '>= 0.1.2'
23
23
 
24
- s.add_development_dependency "rspec", "~> 2.1.0"
24
+ s.add_development_dependency "rspec", "~> 2.3.0"
25
25
  s.add_development_dependency "yard", "~> 0.6"
26
26
  s.add_development_dependency "webidl", ">= 0.0.6"
27
27
  s.add_development_dependency "sinatra", "~> 1.0"
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 8
9
- version: 0.1.8
8
+ - 9
9
+ version: 0.1.9
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jari Bakken
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-12-22 00:00:00 +01:00
17
+ date: 2011-01-28 00:00:00 +01:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -42,9 +42,9 @@ dependencies:
42
42
  - !ruby/object:Gem::Version
43
43
  segments:
44
44
  - 2
45
- - 1
45
+ - 3
46
46
  - 0
47
- version: 2.1.0
47
+ version: 2.3.0
48
48
  type: :development
49
49
  version_requirements: *id002
50
50
  - !ruby/object:Gem::Dependency
@@ -180,6 +180,7 @@ files:
180
180
  - lib/watir-webdriver/locators/text_field_locator.rb
181
181
  - lib/watir-webdriver/row_container.rb
182
182
  - lib/watir-webdriver/version.rb
183
+ - lib/watir-webdriver/wait.rb
183
184
  - lib/watir-webdriver/window_switching.rb
184
185
  - lib/watir-webdriver/xpath_support.rb
185
186
  - lib/yard/handlers/watir.rb