watir-webdriver 0.1.2 → 0.1.3
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/Rakefile +3 -7
- data/VERSION +1 -1
- data/lib/watir-webdriver/locators/element_locator.rb +13 -2
- data/spec/browser_spec.rb +0 -1
- data/spec/container_spec.rb +0 -2
- data/spec/element_locator_spec.rb +5 -0
- data/spec/html/special_chars.html +12 -0
- data/spec/html/wait.html +13 -12
- data/spec/special_chars_spec.rb +13 -0
- data/spec/watirspec/filefield_spec.rb +5 -5
- data/spec/watirspec/lib/server.rb +12 -2
- data/spec/watirspec/lib/watirspec.rb +4 -6
- data/watir-webdriver.gemspec +5 -2
- metadata +16 -3
data/Rakefile
CHANGED
@@ -40,16 +40,12 @@ namespace :spec do
|
|
40
40
|
spec.rcov_opts = %w[--exclude spec,ruby-debug,/Library/Ruby,.gem --include lib/watir-webdriver]
|
41
41
|
end
|
42
42
|
|
43
|
-
|
44
|
-
RSpec::Core::RakeTask.new(:ci) do |spec|
|
43
|
+
RSpec::Core::RakeTask.new(:html) do |spec|
|
45
44
|
spec.ruby_opts = "-I lib:spec"
|
46
45
|
spec.pattern = 'spec/**/*_spec.rb'
|
47
|
-
spec.rspec_opts =
|
48
|
-
"--format", "progress",
|
49
|
-
"--backtrace"]
|
50
|
-
spec.rcov = true
|
51
|
-
spec.rcov_opts = %w[--exclude spec,ruby-debug,/Library/Ruby,.gem --include lib/watir-webdriver]
|
46
|
+
spec.rspec_opts = "--format html --out #{ENV["SPEC_REPORT"] || "specs.html"}"
|
52
47
|
end
|
48
|
+
|
53
49
|
end
|
54
50
|
|
55
51
|
task :spec => :check_dependencies
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
@@ -297,9 +297,9 @@ module Watir
|
|
297
297
|
def equal_pair(key, value)
|
298
298
|
# we assume :label means a corresponding label element, not the attribute
|
299
299
|
if key == :label && should_use_label_element?
|
300
|
-
"@id=//label[normalize-space()
|
300
|
+
"@id=//label[normalize-space()=#{xpath_string(value)}]/@for"
|
301
301
|
else
|
302
|
-
"#{lhs_for(key)}
|
302
|
+
"#{lhs_for(key)}=#{xpath_string(value)}"
|
303
303
|
end
|
304
304
|
end
|
305
305
|
|
@@ -348,5 +348,16 @@ module Watir
|
|
348
348
|
false
|
349
349
|
end
|
350
350
|
|
351
|
+
def xpath_string(value)
|
352
|
+
if value.include? "'"
|
353
|
+
parts = value.split("'", -1).map { |part| "'#{part}'" }
|
354
|
+
string = parts.join(%{,"'",})
|
355
|
+
|
356
|
+
"concat(#{string})"
|
357
|
+
else
|
358
|
+
"'#{value}'"
|
359
|
+
end
|
360
|
+
end
|
361
|
+
|
351
362
|
end # ElementLocator
|
352
363
|
end # Watir
|
data/spec/browser_spec.rb
CHANGED
data/spec/container_spec.rb
CHANGED
@@ -26,6 +26,11 @@ describe Watir::ElementLocator do
|
|
26
26
|
locate_one :title => "foo"
|
27
27
|
end
|
28
28
|
|
29
|
+
it "handles single quotes in the attribute string" do
|
30
|
+
expect_one :xpath, %{.//*[@title=concat('foo and ',"'",'bar',"'",'')]}
|
31
|
+
locate_one :title => "foo and 'bar'"
|
32
|
+
end
|
33
|
+
|
29
34
|
it "handles selector with tag name and multiple attributes" do
|
30
35
|
expect_one :xpath, ".//div[@class='foo' and @title='bar']"
|
31
36
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
5
|
+
<title>Special Chars</title>
|
6
|
+
</head>
|
7
|
+
|
8
|
+
<body>
|
9
|
+
<div id='single-quote'>single 'quotes'</div>
|
10
|
+
<div id='double-quote'>double "quotes"</div>
|
11
|
+
</body>
|
12
|
+
</html>
|
data/spec/html/wait.html
CHANGED
@@ -3,20 +3,21 @@
|
|
3
3
|
<head>
|
4
4
|
<title>wait test</title>
|
5
5
|
<script type="text/javascript" charset="utf-8">
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
6
|
+
function setTimeoutDisplay(id, display, timeout) {
|
7
|
+
setTimeout(function() {
|
8
|
+
document.getElementById(id).style.display = display;
|
9
|
+
}, timeout);
|
10
|
+
}
|
11
|
+
|
12
|
+
function setTimeoutRemove(id, timeout) {
|
13
|
+
setTimeout(function() {
|
14
|
+
var e = document.getElementById(id);
|
15
|
+
e.parentNode.removeChild(e);
|
16
|
+
}, timeout);
|
17
|
+
}
|
17
18
|
</script>
|
18
19
|
</head>
|
19
|
-
|
20
|
+
|
20
21
|
<body>
|
21
22
|
<div id="foo" style="display:block;">foo</div>
|
22
23
|
<div id="bar" style="display:none;">bar</div>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.expand_path('watirspec/spec_helper', File.dirname(__FILE__))
|
2
|
+
|
3
|
+
describe Watir::Browser do
|
4
|
+
|
5
|
+
before do
|
6
|
+
browser.goto("file://" + File.expand_path("../html/special_chars.html", __FILE__))
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should find elements with single quotes" do
|
10
|
+
browser.div(:text => "single 'quotes'").should exist
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -144,12 +144,12 @@ describe "FileField" do
|
|
144
144
|
browser.file_field.value = '/tmp/unlikely-to-exist'
|
145
145
|
browser.file_field.value.should == '/tmp/unlikely-to-exist'
|
146
146
|
end
|
147
|
-
end
|
148
147
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
148
|
+
it "does not alter its argument" do
|
149
|
+
value = '/foo/bar'
|
150
|
+
browser.file_field.value = value
|
151
|
+
value.should == '/foo/bar'
|
152
|
+
end
|
153
153
|
end
|
154
154
|
end
|
155
155
|
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
+
require "socket"
|
4
|
+
|
3
5
|
module WatirSpec
|
4
6
|
class Server < Sinatra::Base
|
5
7
|
class << self
|
@@ -68,11 +70,14 @@ module WatirSpec
|
|
68
70
|
defined?(@running) && @running
|
69
71
|
end
|
70
72
|
|
73
|
+
SOCKET_ERRORS = [Errno::EADDRINUSE]
|
74
|
+
SOCKET_ERRORS << SocketError if defined?(SocketError) # ruby versions...
|
75
|
+
|
71
76
|
def free_port?(port)
|
72
77
|
s = TCPServer.new(@host, port)
|
73
78
|
s.close
|
74
79
|
true
|
75
|
-
rescue
|
80
|
+
rescue *SOCKET_ERRORS
|
76
81
|
false
|
77
82
|
end
|
78
83
|
|
@@ -85,7 +90,12 @@ module WatirSpec
|
|
85
90
|
raise "please run `gem install childprocess` for WatirSpec on Windows + MRI\n\t(caught: #{ex.message})"
|
86
91
|
end
|
87
92
|
|
88
|
-
|
93
|
+
path = File.expand_path("../../spec_helper.rb", __FILE__)
|
94
|
+
|
95
|
+
process = ChildProcess.build(WatirSpec.ruby, path)
|
96
|
+
process.io.inherit! if $DEBUG
|
97
|
+
process.start
|
98
|
+
|
89
99
|
at_exit { process.stop }
|
90
100
|
end
|
91
101
|
end # class << Server
|
@@ -58,19 +58,17 @@ module WatirSpec
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def ruby
|
61
|
-
|
61
|
+
@ruby ||= (
|
62
62
|
if defined?(Gem)
|
63
|
-
|
63
|
+
Gem.ruby
|
64
64
|
else
|
65
65
|
require "rbconfig"
|
66
66
|
rb = File.join(RbConfig::CONFIG.values_at('BINDIR', 'RUBY_INSTALL_NAME').compact)
|
67
67
|
ext = RbConfig::CONFIG['EXEEXT']
|
68
68
|
|
69
|
-
|
69
|
+
"#{rb}#{ext}"
|
70
70
|
end
|
71
|
-
|
72
|
-
|
73
|
-
@ruby
|
71
|
+
)
|
74
72
|
end
|
75
73
|
|
76
74
|
end # class << WatirSpec
|
data/watir-webdriver.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{watir-webdriver}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jari Bakken"]
|
12
|
-
s.date = %q{2010-11-
|
12
|
+
s.date = %q{2010-11-18}
|
13
13
|
s.description = %q{WebDriver-backed Watir}
|
14
14
|
s.email = %q{jari.bakken@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -80,11 +80,13 @@ Gem::Specification.new do |s|
|
|
80
80
|
"spec/element_spec.rb",
|
81
81
|
"spec/html/alerts.html",
|
82
82
|
"spec/html/keylogger.html",
|
83
|
+
"spec/html/special_chars.html",
|
83
84
|
"spec/html/wait.html",
|
84
85
|
"spec/implementation.rb",
|
85
86
|
"spec/input_spec.rb",
|
86
87
|
"spec/locator_spec_helper.rb",
|
87
88
|
"spec/spec_helper.rb",
|
89
|
+
"spec/special_chars_spec.rb",
|
88
90
|
"spec/wait_spec.rb",
|
89
91
|
"support/html5.html",
|
90
92
|
"watir-webdriver.gemspec"
|
@@ -104,6 +106,7 @@ Gem::Specification.new do |s|
|
|
104
106
|
"spec/input_spec.rb",
|
105
107
|
"spec/locator_spec_helper.rb",
|
106
108
|
"spec/spec_helper.rb",
|
109
|
+
"spec/special_chars_spec.rb",
|
107
110
|
"spec/wait_spec.rb",
|
108
111
|
"spec/watirspec/area_spec.rb",
|
109
112
|
"spec/watirspec/areas_spec.rb",
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: watir-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
9
|
+
- 3
|
10
|
+
version: 0.1.3
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Jari Bakken
|
@@ -14,7 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-18 00:00:00 +01:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
@@ -25,6 +26,7 @@ dependencies:
|
|
25
26
|
requirements:
|
26
27
|
- - "="
|
27
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 27
|
28
30
|
segments:
|
29
31
|
- 0
|
30
32
|
- 1
|
@@ -40,6 +42,7 @@ dependencies:
|
|
40
42
|
requirements:
|
41
43
|
- - ~>
|
42
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 11
|
43
46
|
segments:
|
44
47
|
- 2
|
45
48
|
- 1
|
@@ -55,6 +58,7 @@ dependencies:
|
|
55
58
|
requirements:
|
56
59
|
- - ~>
|
57
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 7
|
58
62
|
segments:
|
59
63
|
- 0
|
60
64
|
- 6
|
@@ -69,6 +73,7 @@ dependencies:
|
|
69
73
|
requirements:
|
70
74
|
- - ">="
|
71
75
|
- !ruby/object:Gem::Version
|
76
|
+
hash: 19
|
72
77
|
segments:
|
73
78
|
- 0
|
74
79
|
- 0
|
@@ -84,6 +89,7 @@ dependencies:
|
|
84
89
|
requirements:
|
85
90
|
- - ~>
|
86
91
|
- !ruby/object:Gem::Version
|
92
|
+
hash: 15
|
87
93
|
segments:
|
88
94
|
- 1
|
89
95
|
- 0
|
@@ -98,6 +104,7 @@ dependencies:
|
|
98
104
|
requirements:
|
99
105
|
- - ">="
|
100
106
|
- !ruby/object:Gem::Version
|
107
|
+
hash: 3
|
101
108
|
segments:
|
102
109
|
- 0
|
103
110
|
version: "0"
|
@@ -111,6 +118,7 @@ dependencies:
|
|
111
118
|
requirements:
|
112
119
|
- - ~>
|
113
120
|
- !ruby/object:Gem::Version
|
121
|
+
hash: 9
|
114
122
|
segments:
|
115
123
|
- 2
|
116
124
|
- 3
|
@@ -191,11 +199,13 @@ files:
|
|
191
199
|
- spec/element_spec.rb
|
192
200
|
- spec/html/alerts.html
|
193
201
|
- spec/html/keylogger.html
|
202
|
+
- spec/html/special_chars.html
|
194
203
|
- spec/html/wait.html
|
195
204
|
- spec/implementation.rb
|
196
205
|
- spec/input_spec.rb
|
197
206
|
- spec/locator_spec_helper.rb
|
198
207
|
- spec/spec_helper.rb
|
208
|
+
- spec/special_chars_spec.rb
|
199
209
|
- spec/wait_spec.rb
|
200
210
|
- support/html5.html
|
201
211
|
- watir-webdriver.gemspec
|
@@ -298,6 +308,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
298
308
|
requirements:
|
299
309
|
- - ">="
|
300
310
|
- !ruby/object:Gem::Version
|
311
|
+
hash: 3
|
301
312
|
segments:
|
302
313
|
- 0
|
303
314
|
version: "0"
|
@@ -306,6 +317,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
306
317
|
requirements:
|
307
318
|
- - ">="
|
308
319
|
- !ruby/object:Gem::Version
|
320
|
+
hash: 3
|
309
321
|
segments:
|
310
322
|
- 0
|
311
323
|
version: "0"
|
@@ -326,6 +338,7 @@ test_files:
|
|
326
338
|
- spec/input_spec.rb
|
327
339
|
- spec/locator_spec_helper.rb
|
328
340
|
- spec/spec_helper.rb
|
341
|
+
- spec/special_chars_spec.rb
|
329
342
|
- spec/wait_spec.rb
|
330
343
|
- spec/watirspec/area_spec.rb
|
331
344
|
- spec/watirspec/areas_spec.rb
|