watir-webdriver 0.1.8 → 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
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