watir-webdriver 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,6 +1,5 @@
1
1
  rvm:
2
2
  - 1.9.2
3
- - 1.9.3
4
3
  notifications:
5
4
  recipients:
6
5
  - jari.bakken@gmail.com
@@ -8,5 +7,7 @@ notifications:
8
7
  before_script:
9
8
  - support/travis.sh
10
9
  env:
11
- - WATIR_WEBDRIVER_BROWSER=firefox
12
- - WATIR_WEBDRIVER_BROWSER=chrome
10
+ - WATIR_WEBDRIVER_BROWSER=firefox ALWAYS_LOCATE=false
11
+ - WATIR_WEBDRIVER_BROWSER=firefox ALWAYS_LOCATE=true
12
+ - WATIR_WEBDRIVER_BROWSER=chrome ALWAYS_LOCATE=false
13
+ - WATIR_WEBDRIVER_BROWSER=chrome ALWAYS_LOCATE=true
@@ -239,6 +239,7 @@ module Watir
239
239
 
240
240
  def assert_exists
241
241
  if @element and not Watir.always_locate?
242
+ assert_not_stale
242
243
  return
243
244
  end
244
245
 
@@ -249,6 +250,12 @@ module Watir
249
250
  end
250
251
  end
251
252
 
253
+ def assert_not_stale
254
+ @element.enabled? # do a staleness check - any wire call will do.
255
+ rescue Selenium::WebDriver::Error::ObsoleteElementError => ex
256
+ raise UnknownObjectException, "#{ex.message} - #{selector_string}"
257
+ end
258
+
252
259
  def browser
253
260
  @parent.browser
254
261
  end
@@ -1,3 +1,3 @@
1
1
  module Watir
2
- VERSION = "0.3.5"
2
+ VERSION = "0.3.6"
3
3
  end
@@ -60,7 +60,12 @@ module Watir
60
60
  rescue Exception::NoMatchingWindowFoundException
61
61
  false
62
62
  end
63
- alias_method :present?, :exists? # for Wait::EventuallyPresent
63
+
64
+ def present?
65
+ @handle = nil # relocate
66
+
67
+ exists?
68
+ end
64
69
 
65
70
  def ==(other)
66
71
  return false unless other.kind_of?(self.class)
data/spec/element_spec.rb CHANGED
@@ -30,4 +30,17 @@ describe Watir::Element do
30
30
  end
31
31
  end
32
32
 
33
+ describe "#exists?" do
34
+ it "should not propagate ObsoleteElementErrors" do
35
+ browser.goto 'file://' + File.expand_path('html/removed_element.html', File.dirname(__FILE__))
36
+
37
+ button = browser.button(:id => "remove-button")
38
+ element = browser.div(:id => "text")
39
+
40
+ element.should exist
41
+ button.click
42
+ element.should_not exist
43
+ end
44
+ end
45
+
33
46
  end
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <title>obsolete element</title>
5
+ <script type="text/javascript" charset="utf-8">
6
+ function removeText() {
7
+ var e = document.getElementById("text");
8
+ e.parentNode.removeChild(e);
9
+ }
10
+ </script>
11
+ </head>
12
+
13
+ <body>
14
+ <button id='remove-button' onclick="removeText()">Remove text</button>
15
+ <div id="text">Text</div>
16
+ </body>
17
+ </html>
data/spec/spec_helper.rb CHANGED
@@ -17,6 +17,10 @@ require 'rspec'
17
17
  include Watir
18
18
  include Watir::Exception
19
19
 
20
+ if ENV['ALWAYS_LOCATE'] == "false"
21
+ Watir.always_locate = false
22
+ end
23
+
20
24
  WEBDRIVER_SELECTORS = [:class, :class_name, :css, :id, :name, :tag_name, :xpath]
21
25
 
22
26
  if ENV['TRAVIS']
metadata CHANGED
@@ -1,122 +1,171 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: watir-webdriver
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.5
3
+ version: !ruby/object:Gem::Version
4
+ hash: 31
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 6
10
+ version: 0.3.6
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Jari Bakken
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-10-05 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2011-11-03 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: selenium-webdriver
16
- requirement: &2169429060 !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
17
24
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 19
29
+ segments:
30
+ - 0
31
+ - 2
32
+ - 2
21
33
  version: 0.2.2
22
34
  type: :runtime
23
- prerelease: false
24
- version_requirements: *2169429060
25
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
26
37
  name: rspec
27
- requirement: &2169428560 !ruby/object:Gem::Requirement
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
28
40
  none: false
29
- requirements:
41
+ requirements:
30
42
  - - ~>
31
- - !ruby/object:Gem::Version
32
- version: '2.6'
43
+ - !ruby/object:Gem::Version
44
+ hash: 15
45
+ segments:
46
+ - 2
47
+ - 6
48
+ version: "2.6"
33
49
  type: :development
34
- prerelease: false
35
- version_requirements: *2169428560
36
- - !ruby/object:Gem::Dependency
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
37
52
  name: yard
38
- requirement: &2169427520 !ruby/object:Gem::Requirement
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
39
55
  none: false
40
- requirements:
56
+ requirements:
41
57
  - - ~>
42
- - !ruby/object:Gem::Version
43
- version: '0.6'
58
+ - !ruby/object:Gem::Version
59
+ hash: 7
60
+ segments:
61
+ - 0
62
+ - 6
63
+ version: "0.6"
44
64
  type: :development
45
- prerelease: false
46
- version_requirements: *2169427520
47
- - !ruby/object:Gem::Dependency
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
48
67
  name: webidl
49
- requirement: &2169426200 !ruby/object:Gem::Requirement
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
50
70
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 25
75
+ segments:
76
+ - 0
77
+ - 1
78
+ - 1
54
79
  version: 0.1.1
55
80
  type: :development
56
- prerelease: false
57
- version_requirements: *2169426200
58
- - !ruby/object:Gem::Dependency
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
59
83
  name: sinatra
60
- requirement: &2169412600 !ruby/object:Gem::Requirement
84
+ prerelease: false
85
+ requirement: &id005 !ruby/object:Gem::Requirement
61
86
  none: false
62
- requirements:
87
+ requirements:
63
88
  - - ~>
64
- - !ruby/object:Gem::Version
65
- version: '1.0'
89
+ - !ruby/object:Gem::Version
90
+ hash: 15
91
+ segments:
92
+ - 1
93
+ - 0
94
+ version: "1.0"
66
95
  type: :development
67
- prerelease: false
68
- version_requirements: *2169412600
69
- - !ruby/object:Gem::Dependency
96
+ version_requirements: *id005
97
+ - !ruby/object:Gem::Dependency
70
98
  name: rake
71
- requirement: &2169411380 !ruby/object:Gem::Requirement
99
+ prerelease: false
100
+ requirement: &id006 !ruby/object:Gem::Requirement
72
101
  none: false
73
- requirements:
102
+ requirements:
74
103
  - - ~>
75
- - !ruby/object:Gem::Version
104
+ - !ruby/object:Gem::Version
105
+ hash: 63
106
+ segments:
107
+ - 0
108
+ - 9
109
+ - 2
76
110
  version: 0.9.2
77
111
  type: :development
78
- prerelease: false
79
- version_requirements: *2169411380
80
- - !ruby/object:Gem::Dependency
112
+ version_requirements: *id006
113
+ - !ruby/object:Gem::Dependency
81
114
  name: fuubar
82
- requirement: &2169410480 !ruby/object:Gem::Requirement
115
+ prerelease: false
116
+ requirement: &id007 !ruby/object:Gem::Requirement
83
117
  none: false
84
- requirements:
118
+ requirements:
85
119
  - - ~>
86
- - !ruby/object:Gem::Version
120
+ - !ruby/object:Gem::Version
121
+ hash: 19
122
+ segments:
123
+ - 0
124
+ - 0
125
+ - 6
87
126
  version: 0.0.6
88
127
  type: :development
89
- prerelease: false
90
- version_requirements: *2169410480
91
- - !ruby/object:Gem::Dependency
128
+ version_requirements: *id007
129
+ - !ruby/object:Gem::Dependency
92
130
  name: nokogiri
93
- requirement: &2169409940 !ruby/object:Gem::Requirement
131
+ prerelease: false
132
+ requirement: &id008 !ruby/object:Gem::Requirement
94
133
  none: false
95
- requirements:
96
- - - ! '>='
97
- - !ruby/object:Gem::Version
98
- version: '0'
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ hash: 3
138
+ segments:
139
+ - 0
140
+ version: "0"
99
141
  type: :development
100
- prerelease: false
101
- version_requirements: *2169409940
102
- - !ruby/object:Gem::Dependency
142
+ version_requirements: *id008
143
+ - !ruby/object:Gem::Dependency
103
144
  name: activesupport
104
- requirement: &2169409400 !ruby/object:Gem::Requirement
145
+ prerelease: false
146
+ requirement: &id009 !ruby/object:Gem::Requirement
105
147
  none: false
106
- requirements:
148
+ requirements:
107
149
  - - ~>
108
- - !ruby/object:Gem::Version
150
+ - !ruby/object:Gem::Version
151
+ hash: 9
152
+ segments:
153
+ - 2
154
+ - 3
155
+ - 5
109
156
  version: 2.3.5
110
157
  type: :development
111
- prerelease: false
112
- version_requirements: *2169409400
158
+ version_requirements: *id009
113
159
  description: WebDriver-backed Watir
114
- email:
160
+ email:
115
161
  - jari.bakken@gmail.com
116
162
  executables: []
163
+
117
164
  extensions: []
165
+
118
166
  extra_rdoc_files: []
119
- files:
167
+
168
+ files:
120
169
  - .document
121
170
  - .gitignore
122
171
  - .gitmodules
@@ -185,6 +234,7 @@ files:
185
234
  - spec/element_locator_spec.rb
186
235
  - spec/element_spec.rb
187
236
  - spec/html/alerts.html
237
+ - spec/html/removed_element.html
188
238
  - spec/html/special_chars.html
189
239
  - spec/html/wait.html
190
240
  - spec/implementation.rb
@@ -198,35 +248,45 @@ files:
198
248
  - watir-webdriver.gemspec
199
249
  homepage: http://github.com/jarib/watir-webdriver
200
250
  licenses: []
251
+
201
252
  post_install_message:
202
253
  rdoc_options: []
203
- require_paths:
254
+
255
+ require_paths:
204
256
  - lib
205
- required_ruby_version: !ruby/object:Gem::Requirement
257
+ required_ruby_version: !ruby/object:Gem::Requirement
206
258
  none: false
207
- requirements:
208
- - - ! '>='
209
- - !ruby/object:Gem::Version
210
- version: '0'
211
- required_rubygems_version: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ hash: 3
263
+ segments:
264
+ - 0
265
+ version: "0"
266
+ required_rubygems_version: !ruby/object:Gem::Requirement
212
267
  none: false
213
- requirements:
214
- - - ! '>='
215
- - !ruby/object:Gem::Version
216
- version: '0'
268
+ requirements:
269
+ - - ">="
270
+ - !ruby/object:Gem::Version
271
+ hash: 3
272
+ segments:
273
+ - 0
274
+ version: "0"
217
275
  requirements: []
276
+
218
277
  rubyforge_project: watir-webdriver
219
278
  rubygems_version: 1.8.10
220
279
  signing_key:
221
280
  specification_version: 3
222
281
  summary: Watir on WebDriver
223
- test_files:
282
+ test_files:
224
283
  - spec/alert_spec.rb
225
284
  - spec/browser_spec.rb
226
285
  - spec/container_spec.rb
227
286
  - spec/element_locator_spec.rb
228
287
  - spec/element_spec.rb
229
288
  - spec/html/alerts.html
289
+ - spec/html/removed_element.html
230
290
  - spec/html/special_chars.html
231
291
  - spec/html/wait.html
232
292
  - spec/implementation.rb