selenium-webdriver 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,13 @@
1
+ 2.3.0 (2011-08-01)
2
+ ==================
3
+
4
+ * Add Selenium::WebDriver::Chrome::Profile
5
+ * Better detection of clickable areas in Firefox.
6
+ * Merge of Google-contributed code into the underlying Atoms.
7
+ * IE click issue fixed (#1650)
8
+ * No longer raise in Element#inspect if the element is obsolete.
9
+
10
+
1
11
  2.2.0 (2011-07-26)
2
12
  ==================
3
13
 
@@ -2,6 +2,7 @@ require 'net/http'
2
2
  require 'uri'
3
3
  require 'cgi'
4
4
  require 'digest/md5'
5
+ require 'base64'
5
6
  require 'fileutils'
6
7
  require 'tmpdir'
7
8
 
@@ -2,7 +2,6 @@ require 'childprocess'
2
2
  require 'tmpdir'
3
3
  require 'fileutils'
4
4
  require 'date'
5
- require 'base64'
6
5
 
7
6
  have_lib = lambda { |lib|
8
7
  begin
@@ -2,6 +2,7 @@ require 'net/http'
2
2
 
3
3
  require 'selenium/webdriver/chrome/service'
4
4
  require 'selenium/webdriver/chrome/bridge'
5
+ require 'selenium/webdriver/chrome/profile'
5
6
 
6
7
  module Selenium
7
8
  module WebDriver
@@ -17,7 +18,7 @@ module Selenium
17
18
  end
18
19
 
19
20
  def self.path
20
- @path
21
+ @path ||= nil
21
22
  end
22
23
 
23
24
  end
@@ -10,6 +10,7 @@ module Selenium
10
10
  switches = opts.delete(:switches)
11
11
  native_events = opts.delete(:native_events)
12
12
  verbose = opts.delete(:verbose)
13
+ profile = opts.delete(:profile)
13
14
 
14
15
  unless opts.empty?
15
16
  raise ArgumentError, "unknown option#{'s' if opts.size != 1}: #{opts.inspect}"
@@ -28,6 +29,7 @@ module Selenium
28
29
  caps.merge! 'chrome.binary' => Chrome.path if Chrome.path
29
30
  caps.merge! 'chrome.nativeEvents' => true if native_events
30
31
  caps.merge! 'chrome.verbose' => true if verbose
32
+ caps.merge! 'chrome.profile' => profile.as_json['zip'] if profile
31
33
 
32
34
  @service = Service.default_service
33
35
  @service.start
@@ -0,0 +1,66 @@
1
+ module Selenium
2
+ module WebDriver
3
+ module Chrome
4
+
5
+ #
6
+ # @private
7
+ #
8
+
9
+ class Profile
10
+ include ProfileHelper
11
+
12
+ def initialize(model = nil)
13
+ @model = verify_model(model)
14
+ end
15
+
16
+ #
17
+ # Set a preference in the profile.
18
+ #
19
+ # See http://codesearch.google.com/codesearch#OAMlx_jo-ck/src/chrome/common/pref_names.cc&exact_package=chromium
20
+ #
21
+
22
+ def []=(key, value)
23
+ parts = key.split(".")
24
+ parts[0..-2].inject(prefs) { |pr, k| pr[k] ||= {} }[parts.last] = value
25
+ end
26
+
27
+ def [](key)
28
+ parts = key.split(".")
29
+ parts.inject(prefs) { |pr, k| pr.fetch(k) }
30
+ end
31
+
32
+ def layout_on_disk
33
+ dir = @model ? create_tmp_copy(@model) : Dir.mktmpdir("webdriver-chrome-profile")
34
+ FileReaper << dir
35
+
36
+ write_prefs_to dir
37
+
38
+ dir
39
+ end
40
+
41
+ private
42
+
43
+ def write_prefs_to(dir)
44
+ prefs_file = prefs_file_for(dir)
45
+
46
+ FileUtils.mkdir_p File.dirname(prefs_file)
47
+ File.open(prefs_file, "w") { |file| file << prefs.to_json }
48
+ end
49
+
50
+ def prefs
51
+ @prefs ||= read_model_prefs
52
+ end
53
+
54
+ def read_model_prefs
55
+ return {} unless @model
56
+ JSON.parse File.read(prefs_file_for(@model))
57
+ end
58
+
59
+ def prefs_file_for(dir)
60
+ File.join dir, 'Default', 'Preferences'
61
+ end
62
+ end # Profile
63
+
64
+ end # Chrome
65
+ end # WebDriver
66
+ end # Selenium
@@ -1,5 +1,6 @@
1
1
  require 'selenium/webdriver/common/core_ext/dir'
2
2
  require 'selenium/webdriver/common/core_ext/string'
3
+ require 'selenium/webdriver/common/core_ext/base64'
3
4
  require 'selenium/webdriver/common/error'
4
5
  require 'selenium/webdriver/common/platform'
5
6
  require 'selenium/webdriver/common/proxy'
@@ -22,5 +23,6 @@ require 'selenium/webdriver/common/driver_extensions/rotatable'
22
23
  require 'selenium/webdriver/common/driver_extensions/has_input_devices'
23
24
  require 'selenium/webdriver/common/keys'
24
25
  require 'selenium/webdriver/common/bridge_helper'
26
+ require 'selenium/webdriver/common/profile_helper'
25
27
  require 'selenium/webdriver/common/driver'
26
28
  require 'selenium/webdriver/common/element'
@@ -0,0 +1,9 @@
1
+ require 'base64'
2
+
3
+ module Base64
4
+
5
+ def self.strict_encode64(str)
6
+ encode64(str).gsub(/\n/, '')
7
+ end unless respond_to?(:strict_encode64) # added in 1.9
8
+
9
+ end
@@ -10,6 +10,14 @@ module Selenium
10
10
 
11
11
  ORIENTATIONS = [:landscape, :portrait]
12
12
 
13
+ #
14
+ # Change the screen orientation
15
+ #
16
+ # @param [:landscape, :portrait] Orientation
17
+ #
18
+ # @api public
19
+ #
20
+
13
21
  def rotate(orientation)
14
22
  unless ORIENTATIONS.include?(orientation)
15
23
  raise ArgumentError, "expected #{ORIENTATIONS.inspect}, got #{orientation.inspect}"
@@ -18,6 +26,14 @@ module Selenium
18
26
  bridge.setScreenOrientation(orientation.to_s.upcase)
19
27
  end
20
28
 
29
+ #
30
+ # Get the current screen orientation
31
+ #
32
+ # @return [:landscape, :portrait] orientation
33
+ #
34
+ # @api public
35
+ #
36
+
21
37
  def orientation
22
38
  bridge.getScreenOrientation.to_sym.downcase
23
39
  end
@@ -8,10 +8,24 @@ module Selenium
8
8
  module DriverExtensions
9
9
  module TakesScreenshot
10
10
 
11
+ #
12
+ # Save a PNG screenshot to the given path
13
+ #
14
+ # @api public
15
+ #
16
+
11
17
  def save_screenshot(png_path)
12
18
  File.open(png_path, 'wb') { |f| f << screenshot_as(:png) }
13
19
  end
14
20
 
21
+ #
22
+ # Return a PNG screenshot in the given format as a string
23
+ #
24
+ # @param [:base64, :png] format
25
+ # @return String screenshot
26
+ #
27
+ # @api public
28
+
15
29
  def screenshot_as(format)
16
30
  case format
17
31
  when :base64
@@ -14,7 +14,7 @@ module Selenium
14
14
  end
15
15
 
16
16
  def inspect
17
- '#<%s:0x%x id=%s tag_name=%s>' % [self.class, hash*2, @id.inspect, tag_name.inspect]
17
+ '#<%s:0x%x id=%s>' % [self.class, hash*2, @id.inspect]
18
18
  end
19
19
 
20
20
  def ==(other)
@@ -0,0 +1,67 @@
1
+ module Selenium
2
+ module WebDriver
3
+
4
+ #
5
+ # @private
6
+ #
7
+ # Common methods for Chrome::Profile and Firefox::Profile
8
+ # Includers must implement #layout_on_disk
9
+ #
10
+
11
+ module ProfileHelper
12
+
13
+ def self.included(base)
14
+ base.extend ClassMethods
15
+ end
16
+
17
+ def as_json(opts = nil)
18
+ {'zip' => Zipper.zip(layout_on_disk)}
19
+ end
20
+
21
+ def to_json(*args)
22
+ as_json.to_json(*args)
23
+ end
24
+
25
+ private
26
+
27
+ def create_tmp_copy(directory)
28
+ tmp_directory = Dir.mktmpdir("webdriver-rb-profilecopy")
29
+
30
+ # TODO: must be a better way..
31
+ FileUtils.rm_rf tmp_directory
32
+ FileUtils.mkdir_p File.dirname(tmp_directory), :mode => 0700
33
+ FileUtils.cp_r directory, tmp_directory
34
+
35
+ tmp_directory
36
+ end
37
+
38
+ def verify_model(model)
39
+ return unless model
40
+
41
+ raise Errno::ENOENT, model unless File.exist?(model)
42
+ raise Errno::ENOTDIR, model unless File.directory?(model)
43
+
44
+ model
45
+ end
46
+
47
+ module ClassMethods
48
+ def from_json(json)
49
+ data = JSON.parse(json).fetch('zip')
50
+
51
+ # can't use Tempfile here since it doesn't support File::BINARY mode on 1.8
52
+ # can't use Dir.mktmpdir(&blk) because of http://jira.codehaus.org/browse/JRUBY-4082
53
+ tmp_dir = Dir.mktmpdir
54
+ begin
55
+ zip_path = File.join(tmp_dir, "webdriver-profile-duplicate-#{json.hash}")
56
+ File.open(zip_path, "wb") { |zip_file| zip_file << Base64.decode64(data) }
57
+
58
+ new Zipper.unzip(zip_path)
59
+ ensure
60
+ FileUtils.rm_rf tmp_dir
61
+ end
62
+ end
63
+ end # ClassMethods
64
+
65
+ end # ProfileHelper
66
+ end # WebDriver
67
+ end # Selenium
@@ -41,7 +41,7 @@ module Selenium
41
41
  end
42
42
  }
43
43
 
44
- File.open(zip_path, "rb") { |io| Base64.encode64 io.read }
44
+ File.open(zip_path, "rb") { |io| Base64.strict_encode64 io.read }
45
45
  ensure
46
46
  FileUtils.rm_rf tmp_dir
47
47
  end
@@ -2,6 +2,7 @@ module Selenium
2
2
  module WebDriver
3
3
  module Firefox
4
4
  class Profile
5
+ include ProfileHelper
5
6
 
6
7
  WEBDRIVER_EXTENSION_PATH = File.expand_path("#{WebDriver.root}/selenium/webdriver/firefox/extension/webdriver.xpi")
7
8
  WEBDRIVER_PREFS = {
@@ -55,7 +56,6 @@ module Selenium
55
56
  @secure_ssl = model_prefs.delete(WEBDRIVER_PREFS[:untrusted_certs]) != "true"
56
57
  @untrusted_issuer = model_prefs.delete(WEBDRIVER_PREFS[:untrusted_issuer]) == "true"
57
58
  @load_no_focus_lib = model_prefs.delete(WEBDRIVER_PREFS[:load_no_focus_lib]) == "true" # not stored in profile atm, so will always be false.
58
-
59
59
  @additional_prefs = model_prefs
60
60
  end
61
61
 
@@ -74,29 +74,6 @@ module Selenium
74
74
  profile_dir
75
75
  end
76
76
 
77
- def as_json(opts = nil)
78
- {'zip' => Zipper.zip(layout_on_disk)}
79
- end
80
-
81
- def to_json(*args)
82
- as_json.to_json(*args)
83
- end
84
-
85
- def self.from_json(json)
86
- data = JSON.parse(json).fetch('zip')
87
-
88
- # can't use Tempfile here since it doesn't support File::BINARY mode on 1.8
89
- # can't use Dir.mktmpdir(&blk) because of http://jira.codehaus.org/browse/JRUBY-4082
90
- tmp_dir = Dir.mktmpdir
91
- begin
92
- zip_path = File.join(tmp_dir, "webdriver-profile-duplicate-#{json.hash}")
93
- File.open(zip_path, "wb") { |zip_file| zip_file << Base64.decode64(data) }
94
-
95
- new Zipper.unzip(zip_path)
96
- ensure
97
- FileUtils.rm_rf tmp_dir
98
- end
99
- end
100
77
 
101
78
  #
102
79
  # Set a preference for this particular profile.
@@ -213,15 +190,6 @@ module Selenium
213
190
  end
214
191
  end
215
192
 
216
- def verify_model(model)
217
- return unless model
218
-
219
- raise Errno::ENOENT, model unless File.exist?(model)
220
- raise Errno::ENOTDIR, model unless File.directory?(model)
221
-
222
- model
223
- end
224
-
225
193
  def read_model_prefs
226
194
  return {} unless @model
227
195
 
@@ -242,17 +210,6 @@ module Selenium
242
210
  File.basename(path, File.extname(path))
243
211
  end
244
212
 
245
- def create_tmp_copy(directory)
246
- tmp_directory = Dir.mktmpdir("webdriver-rb-profilecopy")
247
-
248
- # TODO: must be a better way..
249
- FileUtils.rm_rf tmp_directory
250
- FileUtils.mkdir_p File.dirname(tmp_directory), :mode => 0700
251
- FileUtils.cp_r directory, tmp_directory
252
-
253
- tmp_directory
254
- end
255
-
256
213
  def update_user_prefs_in(directory)
257
214
  path = File.join(directory, 'user.js')
258
215
  prefs = read_user_prefs(path)
@@ -3,24 +3,24 @@ module Selenium
3
3
  module Support
4
4
 
5
5
  class AbstractEventListener
6
- def before_navigate_to(url) end
7
- def after_navigate_to(url) end
8
- def before_navigate_back() end
9
- def after_navigate_back() end
10
- def before_navigate_forward() end
11
- def after_navigate_forward() end
12
- def before_find(by, what) end
13
- def after_find(by, what) end
14
- def before_click(element) end
15
- def after_click(element) end
16
- def before_change_value_of(element) end
17
- def after_change_value_of(element) end
18
- def before_execute_script(script) end
19
- def after_execute_script(script) end
20
- def before_quit() end
21
- def after_quit() end
22
- def before_close() end
23
- def after_close() end
6
+ def before_navigate_to(url, driver) end
7
+ def after_navigate_to(url, driver) end
8
+ def before_navigate_back(driver) end
9
+ def after_navigate_back(driver) end
10
+ def before_navigate_forward(driver) end
11
+ def after_navigate_forward(driver) end
12
+ def before_find(by, what, driver) end
13
+ def after_find(by, what, driver) end
14
+ def before_click(element, driver) end
15
+ def after_click(element, driver) end
16
+ def before_change_value_of(element, driver) end
17
+ def after_change_value_of(element, driver) end
18
+ def before_execute_script(script, driver) end
19
+ def after_execute_script(script, driver) end
20
+ def before_quit(driver) end
21
+ def after_quit(driver) end
22
+ def before_close(driver) end
23
+ def after_close(driver) end
24
24
  end
25
25
 
26
26
  end
@@ -18,43 +18,43 @@ module Selenium
18
18
  end
19
19
 
20
20
  def get(url)
21
- dispatch(:navigate_to, url) {
21
+ dispatch(:navigate_to, url, driver) {
22
22
  @delegate.get(url)
23
23
  }
24
24
  end
25
25
 
26
26
  def goForward
27
- dispatch(:navigate_forward) {
27
+ dispatch(:navigate_forward, driver) {
28
28
  @delegate.goForward
29
29
  }
30
30
  end
31
31
 
32
32
  def goBack
33
- dispatch(:navigate_back) {
33
+ dispatch(:navigate_back, driver) {
34
34
  @delegate.goBack
35
35
  }
36
36
  end
37
37
 
38
38
  def clickElement(ref)
39
- dispatch(:click, create_element(ref)) {
39
+ dispatch(:click, create_element(ref), driver) {
40
40
  @delegate.clickElement(ref)
41
41
  }
42
42
  end
43
43
 
44
44
  def clearElement(ref)
45
- dispatch(:change_value_of, create_element(ref)) {
45
+ dispatch(:change_value_of, create_element(ref), driver) {
46
46
  @delegate.clearElement(ref)
47
47
  }
48
48
  end
49
49
 
50
50
  def sendKeysToElement(ref, keys)
51
- dispatch(:change_value_of, create_element(ref)) {
51
+ dispatch(:change_value_of, create_element(ref), driver) {
52
52
  @delegate.sendKeysToElement(ref, keys)
53
53
  }
54
54
  end
55
55
 
56
56
  def find_element_by(how, what, parent = nil)
57
- e = dispatch(:find, how, what) {
57
+ e = dispatch(:find, how, what, driver) {
58
58
  @delegate.find_element_by how, what, parent
59
59
  }
60
60
 
@@ -62,7 +62,7 @@ module Selenium
62
62
  end
63
63
 
64
64
  def find_elements_by(how, what, parent = nil)
65
- es = dispatch(:find, how, what) {
65
+ es = dispatch(:find, how, what, driver) {
66
66
  @delegate.find_elements_by(how, what, parent)
67
67
  }
68
68
 
@@ -70,17 +70,17 @@ module Selenium
70
70
  end
71
71
 
72
72
  def executeScript(script, *args)
73
- dispatch(:execute_script, script) {
73
+ dispatch(:execute_script, script, driver) {
74
74
  @delegate.executeScript(script, *args)
75
75
  }
76
76
  end
77
77
 
78
78
  def quit
79
- dispatch(:quit) { @delegate.quit }
79
+ dispatch(:quit, driver) { @delegate.quit }
80
80
  end
81
81
 
82
82
  def close
83
- dispatch(:close) { @delegate.close }
83
+ dispatch(:close, driver) { @delegate.close }
84
84
  end
85
85
 
86
86
  private
@@ -90,6 +90,10 @@ module Selenium
90
90
  Element.new @delegate, ref
91
91
  end
92
92
 
93
+ def driver
94
+ @driver ||= Driver.new(self)
95
+ end
96
+
93
97
  def dispatch(name, *args, &blk)
94
98
  @listener.__send__("before_#{name}", *args)
95
99
  returned = yield
metadata CHANGED
@@ -1,137 +1,101 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: selenium-webdriver
3
- version: !ruby/object:Gem::Version
4
- hash: 7
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.3.0
5
5
  prerelease:
6
- segments:
7
- - 2
8
- - 2
9
- - 0
10
- version: 2.2.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Jari Bakken
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-07-26 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-08-01 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: json_pure
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2170962760 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: rubyzip
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2170962760
25
+ - !ruby/object:Gem::Dependency
26
+ name: rubyzip
27
+ requirement: &2170962280 !ruby/object:Gem::Requirement
38
28
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
46
33
  type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: childprocess
50
34
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2170962280
36
+ - !ruby/object:Gem::Dependency
37
+ name: childprocess
38
+ requirement: &2170948800 !ruby/object:Gem::Requirement
52
39
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 9
57
- segments:
58
- - 0
59
- - 1
60
- - 9
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
61
43
  version: 0.1.9
62
44
  type: :runtime
63
- version_requirements: *id003
64
- - !ruby/object:Gem::Dependency
65
- name: ffi
66
45
  prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *2170948800
47
+ - !ruby/object:Gem::Dependency
48
+ name: ffi
49
+ requirement: &2170948140 !ruby/object:Gem::Requirement
68
50
  none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 25
73
- segments:
74
- - 1
75
- - 0
76
- - 7
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
77
54
  version: 1.0.7
78
55
  type: :runtime
79
- version_requirements: *id004
80
- - !ruby/object:Gem::Dependency
81
- name: rspec
82
56
  prerelease: false
83
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *2170948140
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &2170947540 !ruby/object:Gem::Requirement
84
61
  none: false
85
- requirements:
62
+ requirements:
86
63
  - - ~>
87
- - !ruby/object:Gem::Version
88
- hash: 3
89
- segments:
90
- - 2
91
- - 0
92
- version: "2.0"
64
+ - !ruby/object:Gem::Version
65
+ version: '2.0'
93
66
  type: :development
94
- version_requirements: *id005
95
- - !ruby/object:Gem::Dependency
96
- name: rack
97
67
  prerelease: false
98
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *2170947540
69
+ - !ruby/object:Gem::Dependency
70
+ name: rack
71
+ requirement: &2170946740 !ruby/object:Gem::Requirement
99
72
  none: false
100
- requirements:
73
+ requirements:
101
74
  - - ~>
102
- - !ruby/object:Gem::Version
103
- hash: 15
104
- segments:
105
- - 1
106
- - 0
107
- version: "1.0"
75
+ - !ruby/object:Gem::Version
76
+ version: '1.0'
108
77
  type: :development
109
- version_requirements: *id006
110
- - !ruby/object:Gem::Dependency
111
- name: ci_reporter
112
78
  prerelease: false
113
- requirement: &id007 !ruby/object:Gem::Requirement
79
+ version_requirements: *2170946740
80
+ - !ruby/object:Gem::Dependency
81
+ name: ci_reporter
82
+ requirement: &2170946220 !ruby/object:Gem::Requirement
114
83
  none: false
115
- requirements:
84
+ requirements:
116
85
  - - ~>
117
- - !ruby/object:Gem::Version
118
- hash: 11
119
- segments:
120
- - 1
121
- - 6
122
- - 2
86
+ - !ruby/object:Gem::Version
123
87
  version: 1.6.2
124
88
  type: :development
125
- version_requirements: *id007
126
- 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.
89
+ prerelease: false
90
+ version_requirements: *2170946220
91
+ description: WebDriver is a tool for writing automated tests of websites. It aims
92
+ to mimic the behaviour of a real user, and as such interacts with the HTML of the
93
+ application.
127
94
  email: jari.bakken@gmail.com
128
95
  executables: []
129
-
130
96
  extensions: []
131
-
132
97
  extra_rdoc_files: []
133
-
134
- files:
98
+ files:
135
99
  - lib/selenium/client/base.rb
136
100
  - lib/selenium/client/driver.rb
137
101
  - lib/selenium/client/errors.rb
@@ -149,11 +113,13 @@ files:
149
113
  - lib/selenium/webdriver/android/bridge.rb
150
114
  - lib/selenium/webdriver/android.rb
151
115
  - lib/selenium/webdriver/chrome/bridge.rb
116
+ - lib/selenium/webdriver/chrome/profile.rb
152
117
  - lib/selenium/webdriver/chrome/service.rb
153
118
  - lib/selenium/webdriver/chrome.rb
154
119
  - lib/selenium/webdriver/common/action_builder.rb
155
120
  - lib/selenium/webdriver/common/alert.rb
156
121
  - lib/selenium/webdriver/common/bridge_helper.rb
122
+ - lib/selenium/webdriver/common/core_ext/base64.rb
157
123
  - lib/selenium/webdriver/common/core_ext/dir.rb
158
124
  - lib/selenium/webdriver/common/core_ext/string.rb
159
125
  - lib/selenium/webdriver/common/driver.rb
@@ -170,6 +136,7 @@ files:
170
136
  - lib/selenium/webdriver/common/options.rb
171
137
  - lib/selenium/webdriver/common/platform.rb
172
138
  - lib/selenium/webdriver/common/port_prober.rb
139
+ - lib/selenium/webdriver/common/profile_helper.rb
173
140
  - lib/selenium/webdriver/common/proxy.rb
174
141
  - lib/selenium/webdriver/common/search_context.rb
175
142
  - lib/selenium/webdriver/common/socket_poller.rb
@@ -221,36 +188,26 @@ files:
221
188
  - README
222
189
  homepage: http://selenium.googlecode.com
223
190
  licenses: []
224
-
225
191
  post_install_message:
226
192
  rdoc_options: []
227
-
228
- require_paths:
193
+ require_paths:
229
194
  - lib
230
- required_ruby_version: !ruby/object:Gem::Requirement
195
+ required_ruby_version: !ruby/object:Gem::Requirement
231
196
  none: false
232
- requirements:
233
- - - ">="
234
- - !ruby/object:Gem::Version
235
- hash: 3
236
- segments:
237
- - 0
238
- version: "0"
239
- required_rubygems_version: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ! '>='
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ required_rubygems_version: !ruby/object:Gem::Requirement
240
202
  none: false
241
- requirements:
242
- - - ">="
243
- - !ruby/object:Gem::Version
244
- hash: 3
245
- segments:
246
- - 0
247
- version: "0"
203
+ requirements:
204
+ - - ! '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
248
207
  requirements: []
249
-
250
208
  rubyforge_project:
251
- rubygems_version: 1.8.5
209
+ rubygems_version: 1.8.6
252
210
  signing_key:
253
211
  specification_version: 3
254
212
  summary: The next generation developer focused tool for automated testing of webapps
255
213
  test_files: []
256
-