selenium-webdriver 2.5.0 → 2.6.0
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 +18 -0
- data/lib/selenium/rake/server_task.rb +24 -0
- data/lib/selenium/server.rb +90 -0
- data/lib/selenium/webdriver/android/bridge.rb +1 -1
- data/lib/selenium/webdriver/common/error.rb +1 -0
- data/lib/selenium/webdriver/common/zipper.rb +3 -1
- data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
- data/lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so +0 -0
- data/lib/selenium/webdriver/firefox/native/linux/x86/x_ignore_nofocus.so +0 -0
- data/lib/selenium/webdriver/firefox/profile.rb +1 -0
- data/lib/selenium/webdriver/ie/native/win32/IEDriver.dll +0 -0
- data/lib/selenium/webdriver/ie/native/x64/IEDriver.dll +0 -0
- data/lib/selenium/webdriver/iphone/bridge.rb +2 -1
- data/lib/selenium/webdriver/opera.rb +12 -0
- data/lib/selenium/webdriver/opera/bridge.rb +63 -10
- data/lib/selenium/webdriver/opera/service.rb +4 -3
- data/lib/selenium/webdriver/remote/capabilities.rb +1 -1
- data/lib/selenium/webdriver/remote/http/common.rb +2 -1
- data/lib/selenium/webdriver/remote/http/default.rb +13 -5
- metadata +234 -180
data/CHANGES
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
2.6.0 (2011-09-13)
|
2
|
+
==================
|
3
|
+
|
4
|
+
* Rescue and retry on Errno::EADDRINUSE to work around ephemeral ports issue on Windows.
|
5
|
+
* Use correct default URL for the Android driver.
|
6
|
+
* Profile zipping now follows symlinks (#2416).
|
7
|
+
* Firefox
|
8
|
+
- Disable malware check
|
9
|
+
- Various #click improvements
|
10
|
+
- Don't scroll if element is already in view
|
11
|
+
* IE:
|
12
|
+
- improve scrolling to elements with 'overflow: sroll'
|
13
|
+
- properly trigger jQuery change events (#2207)
|
14
|
+
- improve handling of nested modal dialogs
|
15
|
+
* Opera:
|
16
|
+
- capabilities exposed as options to Selenium::WebDriver.for
|
17
|
+
* Various iPhone driver fixes (e.g. #1396)
|
18
|
+
|
1
19
|
2.5.0 (2011-08-23)
|
2
20
|
==================
|
3
21
|
|
@@ -20,6 +20,19 @@ module Selenium
|
|
20
20
|
# t.opts = %w[-some options]
|
21
21
|
# end
|
22
22
|
#
|
23
|
+
# Alternatively, you can have the task download a specific version of the server:
|
24
|
+
#
|
25
|
+
# Selenium::Rake::ServerTask.new(:server) do |t|
|
26
|
+
# t.version = '2.6.0'
|
27
|
+
# end
|
28
|
+
#
|
29
|
+
# or the latest version
|
30
|
+
#
|
31
|
+
# Selenium::Rake::ServerTask.new(:server) do |t|
|
32
|
+
# t.version = :latest
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
#
|
23
36
|
# Tasks defined:
|
24
37
|
#
|
25
38
|
# rake selenium:server:start
|
@@ -76,6 +89,12 @@ module Selenium
|
|
76
89
|
|
77
90
|
attr_accessor :opts
|
78
91
|
|
92
|
+
#
|
93
|
+
# Specify the version of the server jar to download
|
94
|
+
#
|
95
|
+
|
96
|
+
attr_accessor :version
|
97
|
+
|
79
98
|
|
80
99
|
def initialize(prefix = "selenium:server")
|
81
100
|
@jar = nil
|
@@ -85,9 +104,14 @@ module Selenium
|
|
85
104
|
@background = true
|
86
105
|
@log = true
|
87
106
|
@opts = []
|
107
|
+
@version = nil
|
88
108
|
|
89
109
|
yield self if block_given?
|
90
110
|
|
111
|
+
if @version
|
112
|
+
@jar = Selenium::Server.download(@version)
|
113
|
+
end
|
114
|
+
|
91
115
|
unless @jar
|
92
116
|
raise MissingJarFileError, "must provide path to the selenium server jar"
|
93
117
|
end
|
data/lib/selenium/server.rb
CHANGED
@@ -7,8 +7,86 @@ module Selenium
|
|
7
7
|
#
|
8
8
|
# Wraps the remote server jar
|
9
9
|
#
|
10
|
+
# Usage:
|
11
|
+
#
|
12
|
+
# server = Selenium::Server.new('/path/to/selenium-server-standalone.jar')
|
13
|
+
# server.start
|
14
|
+
#
|
15
|
+
# Automatically download the given version:
|
16
|
+
#
|
17
|
+
# server = Selenium::Server.get '2.6.0'
|
18
|
+
# server.start
|
19
|
+
#
|
20
|
+
# or the latest version:
|
21
|
+
#
|
22
|
+
# server = Selenium::Server.get :latest
|
23
|
+
# server.start
|
24
|
+
#
|
10
25
|
|
11
26
|
class Server
|
27
|
+
CL_RESET = WebDriver::Platform.windows? ? '' : "\r\e[0K"
|
28
|
+
|
29
|
+
def self.get(required_version, opts = {})
|
30
|
+
new(download(required_version), opts)
|
31
|
+
end
|
32
|
+
|
33
|
+
#
|
34
|
+
# Download the given version of the selenium-server-standalone jar.
|
35
|
+
#
|
36
|
+
|
37
|
+
def self.download(required_version)
|
38
|
+
required_version = latest if required_version == :latest
|
39
|
+
download_file_name = "selenium-server-standalone-#{required_version}.jar"
|
40
|
+
|
41
|
+
if File.exists? download_file_name
|
42
|
+
return download_file_name
|
43
|
+
end
|
44
|
+
|
45
|
+
begin
|
46
|
+
open(download_file_name, "wb") do |destination|
|
47
|
+
net_http.start("selenium.googlecode.com") do |http|
|
48
|
+
resp = http.request_get("/files/#{download_file_name}") do |response|
|
49
|
+
total = response.content_length
|
50
|
+
progress = 0
|
51
|
+
segment_count = 0
|
52
|
+
|
53
|
+
response.read_body do |segment|
|
54
|
+
progress += segment.length
|
55
|
+
segment_count += 1
|
56
|
+
|
57
|
+
if segment_count % 15 == 0
|
58
|
+
percent = (progress.to_f / total.to_f) * 100
|
59
|
+
print "#{CL_RESET}Downloading #{download_file_name}: #{percent.to_i}% (#{progress} / #{total})"
|
60
|
+
segment_count = 0
|
61
|
+
end
|
62
|
+
|
63
|
+
destination.write(segment)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
unless resp.kind_of? Net::HTTPSuccess
|
68
|
+
raise "#{resp.code} for #{download_file_name}"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
rescue
|
73
|
+
FileUtils.rm download_file_name if File.exists? download_file_name
|
74
|
+
raise
|
75
|
+
end
|
76
|
+
|
77
|
+
download_file_name
|
78
|
+
end
|
79
|
+
|
80
|
+
#
|
81
|
+
# Ask Google Code what the latest selenium-server-standalone version is.
|
82
|
+
#
|
83
|
+
|
84
|
+
def self.latest
|
85
|
+
net_http.start("code.google.com") do |http|
|
86
|
+
resp = http.get("/p/selenium/downloads/list")
|
87
|
+
resp.body.to_s[/selenium-server-standalone-(\d+.\d+.\d+).jar/, 1]
|
88
|
+
end
|
89
|
+
end
|
12
90
|
|
13
91
|
def initialize(jar, opts = {})
|
14
92
|
raise Errno::ENOENT, jar unless File.exist?(jar)
|
@@ -62,6 +140,18 @@ module Selenium
|
|
62
140
|
|
63
141
|
private
|
64
142
|
|
143
|
+
def self.net_http
|
144
|
+
if ENV['http_proxy']
|
145
|
+
http_proxy = ENV['http_proxy']
|
146
|
+
http_proxy = "http://#{http_proxy}" unless http_proxy =~ /^http:\/\//i
|
147
|
+
uri = URI.parse(http_proxy)
|
148
|
+
|
149
|
+
Net::HTTP::Proxy(uri.host, uri.port)
|
150
|
+
else
|
151
|
+
Net::HTTP
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
65
155
|
def stop_process
|
66
156
|
return unless @process.alive?
|
67
157
|
|
@@ -35,7 +35,9 @@ module Selenium
|
|
35
35
|
Zip::ZipFile.open(zip_path, Zip::ZipFile::CREATE) { |zip|
|
36
36
|
::Find.find(path) do |file|
|
37
37
|
next if File.directory?(file)
|
38
|
-
|
38
|
+
|
39
|
+
entry = Zip::ZipEntry.new(zip_path, file.sub("#{path}/", ''))
|
40
|
+
entry.follow_symlinks = true
|
39
41
|
|
40
42
|
zip.add entry, file
|
41
43
|
end
|
Binary file
|
File without changes
|
File without changes
|
@@ -270,6 +270,7 @@ module Selenium
|
|
270
270
|
"browser.link.open_external" => '2',
|
271
271
|
"browser.link.open_newwindow" => '2',
|
272
272
|
"browser.safebrowsing.enabled" => 'false',
|
273
|
+
"browser.safebrowsing.malware.enabled" => 'false',
|
273
274
|
"browser.search.update" => 'false',
|
274
275
|
"browser.sessionstore.resume_from_crash" => 'false',
|
275
276
|
"browser.shell.checkDefaultBrowser" => 'false',
|
Binary file
|
Binary file
|
@@ -9,9 +9,10 @@ module Selenium
|
|
9
9
|
remote_opts = {
|
10
10
|
:url => opts.fetch(:url, DEFAULT_URL),
|
11
11
|
:desired_capabilities => opts.fetch(:desired_capabilities, capabilities),
|
12
|
-
:http_client => opts[:http_client]
|
13
12
|
}
|
14
13
|
|
14
|
+
remote_opts[:http_client] = opts[:http_client] if opts.has_key?(:http_client)
|
15
|
+
|
15
16
|
super remote_opts
|
16
17
|
end
|
17
18
|
|
@@ -6,6 +6,18 @@ module Selenium
|
|
6
6
|
module WebDriver
|
7
7
|
|
8
8
|
module Opera
|
9
|
+
def self.driver_path=(path)
|
10
|
+
Service.selenium_server_jar = path
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.path=(path)
|
14
|
+
Platform.assert_executable path
|
15
|
+
@path = path
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.path
|
19
|
+
@path ||= nil
|
20
|
+
end
|
9
21
|
end
|
10
22
|
|
11
23
|
end
|
@@ -6,22 +6,19 @@ module Selenium
|
|
6
6
|
# @api private
|
7
7
|
#
|
8
8
|
|
9
|
+
LOGGING_LEVELS = [:severe, :warning, :info, :config, :fine, :finer, :finest, :all]
|
10
|
+
|
9
11
|
class Bridge < Remote::Bridge
|
10
12
|
|
11
13
|
def initialize(opts = {})
|
12
|
-
|
13
|
-
|
14
|
-
unless opts.empty?
|
15
|
-
raise ArgumentError, "unknown option#{'s' if opts.size != 1}: #{opts.inspect}"
|
16
|
-
end
|
17
|
-
|
18
|
-
caps = Remote::Capabilities.opera
|
19
|
-
|
20
|
-
@service = Service.default_service
|
14
|
+
@service = Service.default_service :log => (opts[:logging_level] ? true : false)
|
21
15
|
@service.start
|
22
16
|
|
17
|
+
http_client = opts.delete(:http_client)
|
18
|
+
caps = create_capabilities(opts)
|
19
|
+
|
23
20
|
remote_opts = {
|
24
|
-
:url
|
21
|
+
:url => @service.uri,
|
25
22
|
:desired_capabilities => caps
|
26
23
|
}
|
27
24
|
|
@@ -48,6 +45,62 @@ module Selenium
|
|
48
45
|
@service.stop
|
49
46
|
end
|
50
47
|
|
48
|
+
private
|
49
|
+
|
50
|
+
def create_capabilities(opts)
|
51
|
+
arguments = opts.delete(:arguments)
|
52
|
+
logging_level = opts.delete(:logging_level)
|
53
|
+
logging_file = opts.delete(:logging_file)
|
54
|
+
host = opts.delete(:host)
|
55
|
+
port = opts.delete(:port)
|
56
|
+
launcher = opts.delete(:launcher)
|
57
|
+
profile = opts.delete(:profile)
|
58
|
+
idle = opts.delete(:idle)
|
59
|
+
display = opts.delete(:display)
|
60
|
+
autostart = opts.delete(:autostart)
|
61
|
+
no_restart = opts.delete(:no_restart)
|
62
|
+
no_quit = opts.delete(:no_quit)
|
63
|
+
product = opts.delete(:product)
|
64
|
+
|
65
|
+
unless opts.empty?
|
66
|
+
raise ArgumentError, "unknown option#{'s' if opts.size != 1}: #{opts.inspect}"
|
67
|
+
end
|
68
|
+
|
69
|
+
caps = Remote::Capabilities.opera
|
70
|
+
|
71
|
+
if arguments
|
72
|
+
unless arguments.kind_of? Array
|
73
|
+
raise ArgumentError, ':arguments must be an Array of Strings'
|
74
|
+
end
|
75
|
+
|
76
|
+
caps.merge! 'opera.arguments' => arguments.join(' ')
|
77
|
+
end
|
78
|
+
|
79
|
+
if logging_level
|
80
|
+
unless LOGGING_LEVELS.include?(logging_level)
|
81
|
+
raise ArgumentError,
|
82
|
+
"unknown logging level #{logging_level.inspect}, available levels: #{LOGGING_LEVELS.inspect}"
|
83
|
+
end
|
84
|
+
|
85
|
+
caps.merge! 'opera.logging.level' => logging_level.to_s.upcase
|
86
|
+
end
|
87
|
+
|
88
|
+
caps.merge! 'opera.logging.file' => logging_file if logging_file
|
89
|
+
caps.merge! 'opera.binary' => Opera.path if Opera.path
|
90
|
+
caps.merge! 'opera.host' => host if host
|
91
|
+
caps.merge! 'opera.port' => port.to_i if port
|
92
|
+
caps.merge! 'opera.launcher' => launcher if launcher
|
93
|
+
caps.merge! 'opera.profile' => profile
|
94
|
+
caps.merge! 'opera.idle' => !!idle unless idle.nil?
|
95
|
+
caps.merge! 'opera.display' => display.to_i if display
|
96
|
+
caps.merge! 'opera.autostart' => !!autostart unless autostart.nil?
|
97
|
+
caps.merge! 'opera.no_restart' => !!no_restart unless no_restart.nil?
|
98
|
+
caps.merge! 'opera.no_quit' => !!no_quit unless no_quit.nil?
|
99
|
+
caps.merge! 'opera.product' => product if product
|
100
|
+
|
101
|
+
caps
|
102
|
+
end
|
103
|
+
|
51
104
|
end
|
52
105
|
end
|
53
106
|
end
|
@@ -20,12 +20,13 @@ module Selenium
|
|
20
20
|
@selenium_server_jar = path
|
21
21
|
end
|
22
22
|
|
23
|
-
def self.default_service
|
24
|
-
new selenium_server_jar
|
23
|
+
def self.default_service(opts = {})
|
24
|
+
new selenium_server_jar, opts
|
25
25
|
end
|
26
26
|
|
27
27
|
def initialize(jar, opts = {})
|
28
|
-
opts.merge! :background => true, :port => PortProber.random
|
28
|
+
opts.merge! :background => true, :port => PortProber.random
|
29
|
+
opts.merge! :log => !!$DEBUG if $DEBUG
|
29
30
|
@server = Selenium::Server.new File.expand_path(jar), opts
|
30
31
|
end
|
31
32
|
|
@@ -28,7 +28,8 @@ module Selenium
|
|
28
28
|
puts " > #{headers.inspect}"
|
29
29
|
end
|
30
30
|
elsif verb == :post
|
31
|
-
|
31
|
+
payload = "{}" # work around http://code.google.com/p/selenium/issues/detail?id=1396
|
32
|
+
headers["Content-Length"] = "2"
|
32
33
|
end
|
33
34
|
|
34
35
|
request verb, url, headers, payload
|
@@ -33,18 +33,26 @@ module Selenium
|
|
33
33
|
)
|
34
34
|
end
|
35
35
|
|
36
|
+
MAX_RETRIES = 3
|
37
|
+
|
36
38
|
def request(verb, url, headers, payload, redirects = 0)
|
37
39
|
request = new_request_for(verb, url, headers, payload)
|
38
40
|
|
39
|
-
|
41
|
+
retries = 0
|
40
42
|
begin
|
41
43
|
response = response_for(request)
|
42
|
-
rescue Errno::ECONNABORTED, Errno::ECONNRESET
|
43
|
-
#
|
44
|
-
|
44
|
+
rescue Errno::ECONNABORTED, Errno::ECONNRESET, Errno::EADDRINUSE
|
45
|
+
# a retry is sometimes needed on Windows XP where we may quickly
|
46
|
+
# run out of ephemeral ports
|
47
|
+
#
|
48
|
+
# A more robust solution is bumping the MaxUserPort setting
|
49
|
+
# as described here:
|
50
|
+
#
|
51
|
+
# http://msdn.microsoft.com/en-us/library/aa560610%28v=bts.20%29.aspx
|
52
|
+
raise if retries >= MAX_RETRIES
|
45
53
|
|
46
54
|
request = new_request_for(verb, url, headers, payload)
|
47
|
-
|
55
|
+
retries += 1
|
48
56
|
|
49
57
|
retry
|
50
58
|
end
|
metadata
CHANGED
@@ -1,95 +1,144 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 23
|
4
5
|
prerelease:
|
5
|
-
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 6
|
9
|
+
- 0
|
10
|
+
version: 2.6.0
|
6
11
|
platform: ruby
|
7
12
|
authors:
|
8
|
-
|
13
|
+
- Jari Bakken
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
17
|
|
13
|
-
date: 2011-
|
14
|
-
default_executable:
|
18
|
+
date: 2011-09-13 00:00:00 Z
|
15
19
|
dependencies:
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: json_pure
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: rubyzip
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
38
|
+
none: false
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
hash: 3
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
version: "0"
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id002
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: childprocess
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 21
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
- 2
|
60
|
+
- 1
|
61
|
+
version: 0.2.1
|
62
|
+
type: :runtime
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: ffi
|
66
|
+
prerelease: false
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 25
|
73
|
+
segments:
|
74
|
+
- 1
|
75
|
+
- 0
|
76
|
+
- 7
|
77
|
+
version: 1.0.7
|
78
|
+
type: :runtime
|
79
|
+
version_requirements: *id004
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rspec
|
82
|
+
prerelease: false
|
83
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ~>
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
hash: 3
|
89
|
+
segments:
|
90
|
+
- 2
|
91
|
+
- 0
|
92
|
+
version: "2.0"
|
93
|
+
type: :development
|
94
|
+
version_requirements: *id005
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: rack
|
97
|
+
prerelease: false
|
98
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
hash: 15
|
104
|
+
segments:
|
105
|
+
- 1
|
106
|
+
- 0
|
107
|
+
version: "1.0"
|
108
|
+
type: :development
|
109
|
+
version_requirements: *id006
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: ci_reporter
|
112
|
+
prerelease: false
|
113
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ~>
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
hash: 11
|
119
|
+
segments:
|
120
|
+
- 1
|
121
|
+
- 6
|
122
|
+
- 2
|
123
|
+
version: 1.6.2
|
124
|
+
type: :development
|
125
|
+
version_requirements: *id007
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: webmock
|
128
|
+
prerelease: false
|
129
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
130
|
+
none: false
|
131
|
+
requirements:
|
132
|
+
- - ~>
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
hash: 1
|
135
|
+
segments:
|
136
|
+
- 1
|
137
|
+
- 7
|
138
|
+
- 5
|
139
|
+
version: 1.7.5
|
140
|
+
type: :development
|
141
|
+
version_requirements: *id008
|
93
142
|
description: WebDriver is a tool for writing automated tests of websites. It aims to mimic the behaviour of a real user, and as such interacts with the HTML of the application.
|
94
143
|
email: jari.bakken@gmail.com
|
95
144
|
executables: []
|
@@ -99,97 +148,96 @@ extensions: []
|
|
99
148
|
extra_rdoc_files: []
|
100
149
|
|
101
150
|
files:
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
has_rdoc: true
|
151
|
+
- lib/selenium/client/base.rb
|
152
|
+
- lib/selenium/client/driver.rb
|
153
|
+
- lib/selenium/client/errors.rb
|
154
|
+
- lib/selenium/client/extensions.rb
|
155
|
+
- lib/selenium/client/idiomatic.rb
|
156
|
+
- lib/selenium/client/javascript_expression_builder.rb
|
157
|
+
- lib/selenium/client/javascript_frameworks/jquery.rb
|
158
|
+
- lib/selenium/client/javascript_frameworks/prototype.rb
|
159
|
+
- lib/selenium/client/legacy_driver.rb
|
160
|
+
- lib/selenium/client/protocol.rb
|
161
|
+
- lib/selenium/client/selenium_helper.rb
|
162
|
+
- lib/selenium/client.rb
|
163
|
+
- lib/selenium/rake/server_task.rb
|
164
|
+
- lib/selenium/server.rb
|
165
|
+
- lib/selenium/webdriver/android/bridge.rb
|
166
|
+
- lib/selenium/webdriver/android.rb
|
167
|
+
- lib/selenium/webdriver/chrome/bridge.rb
|
168
|
+
- lib/selenium/webdriver/chrome/profile.rb
|
169
|
+
- lib/selenium/webdriver/chrome/service.rb
|
170
|
+
- lib/selenium/webdriver/chrome.rb
|
171
|
+
- lib/selenium/webdriver/common/action_builder.rb
|
172
|
+
- lib/selenium/webdriver/common/alert.rb
|
173
|
+
- lib/selenium/webdriver/common/bridge_helper.rb
|
174
|
+
- lib/selenium/webdriver/common/core_ext/base64.rb
|
175
|
+
- lib/selenium/webdriver/common/core_ext/dir.rb
|
176
|
+
- lib/selenium/webdriver/common/core_ext/string.rb
|
177
|
+
- lib/selenium/webdriver/common/driver.rb
|
178
|
+
- lib/selenium/webdriver/common/driver_extensions/has_input_devices.rb
|
179
|
+
- lib/selenium/webdriver/common/driver_extensions/rotatable.rb
|
180
|
+
- lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb
|
181
|
+
- lib/selenium/webdriver/common/element.rb
|
182
|
+
- lib/selenium/webdriver/common/error.rb
|
183
|
+
- lib/selenium/webdriver/common/file_reaper.rb
|
184
|
+
- lib/selenium/webdriver/common/keyboard.rb
|
185
|
+
- lib/selenium/webdriver/common/keys.rb
|
186
|
+
- lib/selenium/webdriver/common/mouse.rb
|
187
|
+
- lib/selenium/webdriver/common/navigation.rb
|
188
|
+
- lib/selenium/webdriver/common/options.rb
|
189
|
+
- lib/selenium/webdriver/common/platform.rb
|
190
|
+
- lib/selenium/webdriver/common/port_prober.rb
|
191
|
+
- lib/selenium/webdriver/common/profile_helper.rb
|
192
|
+
- lib/selenium/webdriver/common/proxy.rb
|
193
|
+
- lib/selenium/webdriver/common/search_context.rb
|
194
|
+
- lib/selenium/webdriver/common/socket_poller.rb
|
195
|
+
- lib/selenium/webdriver/common/target_locator.rb
|
196
|
+
- lib/selenium/webdriver/common/timeouts.rb
|
197
|
+
- lib/selenium/webdriver/common/wait.rb
|
198
|
+
- lib/selenium/webdriver/common/zipper.rb
|
199
|
+
- lib/selenium/webdriver/common.rb
|
200
|
+
- lib/selenium/webdriver/firefox/binary.rb
|
201
|
+
- lib/selenium/webdriver/firefox/bridge.rb
|
202
|
+
- lib/selenium/webdriver/firefox/extension/webdriver.xpi
|
203
|
+
- lib/selenium/webdriver/firefox/extension.rb
|
204
|
+
- lib/selenium/webdriver/firefox/launcher.rb
|
205
|
+
- lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so
|
206
|
+
- lib/selenium/webdriver/firefox/native/linux/x86/x_ignore_nofocus.so
|
207
|
+
- lib/selenium/webdriver/firefox/profile.rb
|
208
|
+
- lib/selenium/webdriver/firefox/profiles_ini.rb
|
209
|
+
- lib/selenium/webdriver/firefox/socket_lock.rb
|
210
|
+
- lib/selenium/webdriver/firefox/util.rb
|
211
|
+
- lib/selenium/webdriver/firefox.rb
|
212
|
+
- lib/selenium/webdriver/ie/bridge.rb
|
213
|
+
- lib/selenium/webdriver/ie/native/win32/IEDriver.dll
|
214
|
+
- lib/selenium/webdriver/ie/native/x64/IEDriver.dll
|
215
|
+
- lib/selenium/webdriver/ie/server.rb
|
216
|
+
- lib/selenium/webdriver/ie.rb
|
217
|
+
- lib/selenium/webdriver/iphone/bridge.rb
|
218
|
+
- lib/selenium/webdriver/iphone.rb
|
219
|
+
- lib/selenium/webdriver/opera/bridge.rb
|
220
|
+
- lib/selenium/webdriver/opera/service.rb
|
221
|
+
- lib/selenium/webdriver/opera.rb
|
222
|
+
- lib/selenium/webdriver/remote/bridge.rb
|
223
|
+
- lib/selenium/webdriver/remote/capabilities.rb
|
224
|
+
- lib/selenium/webdriver/remote/commands.rb
|
225
|
+
- lib/selenium/webdriver/remote/http/common.rb
|
226
|
+
- lib/selenium/webdriver/remote/http/curb.rb
|
227
|
+
- lib/selenium/webdriver/remote/http/default.rb
|
228
|
+
- lib/selenium/webdriver/remote/http/persistent.rb
|
229
|
+
- lib/selenium/webdriver/remote/response.rb
|
230
|
+
- lib/selenium/webdriver/remote/server_error.rb
|
231
|
+
- lib/selenium/webdriver/remote.rb
|
232
|
+
- lib/selenium/webdriver/support/abstract_event_listener.rb
|
233
|
+
- lib/selenium/webdriver/support/block_event_listener.rb
|
234
|
+
- lib/selenium/webdriver/support/event_firing_bridge.rb
|
235
|
+
- lib/selenium/webdriver/support.rb
|
236
|
+
- lib/selenium/webdriver.rb
|
237
|
+
- lib/selenium-client.rb
|
238
|
+
- lib/selenium-webdriver.rb
|
239
|
+
- CHANGES
|
240
|
+
- README
|
193
241
|
homepage: http://selenium.googlecode.com
|
194
242
|
licenses: []
|
195
243
|
|
@@ -197,23 +245,29 @@ post_install_message:
|
|
197
245
|
rdoc_options: []
|
198
246
|
|
199
247
|
require_paths:
|
200
|
-
|
248
|
+
- lib
|
201
249
|
required_ruby_version: !ruby/object:Gem::Requirement
|
202
250
|
none: false
|
203
251
|
requirements:
|
204
|
-
|
205
|
-
|
206
|
-
|
252
|
+
- - ">="
|
253
|
+
- !ruby/object:Gem::Version
|
254
|
+
hash: 3
|
255
|
+
segments:
|
256
|
+
- 0
|
257
|
+
version: "0"
|
207
258
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
208
259
|
none: false
|
209
260
|
requirements:
|
210
|
-
|
211
|
-
|
212
|
-
|
261
|
+
- - ">="
|
262
|
+
- !ruby/object:Gem::Version
|
263
|
+
hash: 3
|
264
|
+
segments:
|
265
|
+
- 0
|
266
|
+
version: "0"
|
213
267
|
requirements: []
|
214
268
|
|
215
269
|
rubyforge_project:
|
216
|
-
rubygems_version: 1.
|
270
|
+
rubygems_version: 1.8.10
|
217
271
|
signing_key:
|
218
272
|
specification_version: 3
|
219
273
|
summary: The next generation developer focused tool for automated testing of webapps
|