selenium-webdriver 3.4.1 → 3.4.2

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 CHANGED
@@ -1,3 +1,18 @@
1
+ 3.4.2 (2017-06-14)
2
+ ==================
3
+
4
+ Ruby:
5
+ * Added unhandledPromptBehavior to the list of known capabilities.
6
+ * Added timeouts to the list of known capabilities.
7
+ * Fixed a regression when passing hash as :desired_capabilities caused NoMethodError (issue 4172, thanks Thomas Walpole).
8
+ * Fixed a regression when extension capabilities (the ones that have ":" inside)
9
+ were filtered out when doing protocol handshake.
10
+ * Improved handling of capability names passed as plain camelCased strings
11
+ vs Rubyish snake_cased symbols when doing protocol handshake.
12
+
13
+ Chrome:
14
+ * Fixed a regression when passing :switches to driver initialization was ignored.
15
+
1
16
  3.4.1 (2017-06-13)
2
17
  ==================
3
18
 
@@ -74,9 +74,9 @@ module Selenium
74
74
  caps = opts.delete(:desired_capabilities) { Remote::Capabilities.chrome }
75
75
  options = opts.delete(:options) { Options.new }
76
76
 
77
- args = opts.delete(:args)
77
+ args = opts.delete(:args) || opts.delete(:switches)
78
78
  if args
79
- WebDriver.logger.deprecate ':args', 'Selenium::WebDriver::Chrome::Options#add_argument'
79
+ WebDriver.logger.deprecate ':args or :switches', 'Selenium::WebDriver::Chrome::Options#add_argument'
80
80
  raise ArgumentError, ':args must be an Array of Strings' unless args.is_a? Array
81
81
  args.each { |arg| options.add_argument(arg.to_s) }
82
82
  end
@@ -92,7 +92,7 @@ module Selenium
92
92
  #
93
93
 
94
94
  def create_session(desired_capabilities)
95
- response = execute(:new_session, {}, merged_capabilties(desired_capabilities))
95
+ response = execute(:new_session, {}, merged_capabilities(desired_capabilities))
96
96
 
97
97
  @session_id = response['sessionId']
98
98
  oss_status = response['status']
@@ -171,13 +171,13 @@ module Selenium
171
171
  COMMANDS[command]
172
172
  end
173
173
 
174
- def merged_capabilties(oss_capabilities)
175
- w3c_capabilties = W3C::Capabilities.from_oss(oss_capabilities)
174
+ def merged_capabilities(oss_capabilities)
175
+ w3c_capabilities = W3C::Capabilities.from_oss(oss_capabilities)
176
176
 
177
177
  {
178
178
  desiredCapabilities: oss_capabilities,
179
179
  capabilities: {
180
- firstMatch: [w3c_capabilties]
180
+ firstMatch: [w3c_capabilities]
181
181
  }
182
182
  }
183
183
  end
@@ -39,6 +39,8 @@ module Selenium
39
39
  # https://bugzilla.mozilla.org/show_bug.cgi?id=1326397
40
40
  class Capabilities
41
41
 
42
+ EXTENSION_CAPABILITY_PATTERN = /\A[\w-]+:.*\z/
43
+
42
44
  # TODO (alex): compare with spec
43
45
  KNOWN = [
44
46
  :browser_name,
@@ -54,10 +56,10 @@ module Selenium
54
56
  :implicit_timeout,
55
57
  :page_load_timeout,
56
58
  :script_timeout,
59
+ :unhandled_prompt_behavior,
60
+ :timeouts,
57
61
  ].freeze
58
62
 
59
- BROWSER_SPECIFIC = ['moz:firefoxOptions'].freeze
60
-
61
63
  KNOWN.each do |key|
62
64
  define_method key do
63
65
  @capabilities.fetch(key)
@@ -140,26 +142,30 @@ module Selenium
140
142
 
141
143
  #
142
144
  # Creates W3C compliant capabilities from OSS ones.
143
- # @param [Remote::Capabilities]
145
+ # @param [Hash, Remote::Capabilities]
144
146
  #
145
147
 
146
- def from_oss(capabilities)
147
- w3c_capabilties = new
148
+ def from_oss(oss_capabilities)
149
+ w3c_capabilities = new
150
+
148
151
  # TODO (alex): make capabilities enumerable?
149
- oss_capabilties = capabilities.__send__(:capabilities)
150
- oss_capabilties.each do |name, value|
152
+ oss_capabilities = oss_capabilities.__send__(:capabilities) unless oss_capabilities.is_a?(Hash)
153
+ oss_capabilities.each do |name, value|
151
154
  next if value.nil?
152
155
  next if value.is_a?(String) && value.empty?
153
156
 
154
- if w3c_capabilties.respond_to?("#{name}=")
155
- w3c_capabilties.__send__("#{name}=", value)
156
- elsif BROWSER_SPECIFIC.include?(name)
157
- w3c_capabilties.merge!(name => value)
158
- end
157
+ capability_name = name.to_s
158
+ snake_cased_capability_names = KNOWN.map(&:to_s)
159
+ camel_cased_capability_names = snake_cased_capability_names.map(&w3c_capabilities.method(:camel_case))
160
+
161
+ next unless snake_cased_capability_names.include?(capability_name) ||
162
+ camel_cased_capability_names.include?(capability_name) ||
163
+ capability_name.match(EXTENSION_CAPABILITY_PATTERN)
159
164
 
165
+ w3c_capabilities[name] = value
160
166
  end
161
167
 
162
- w3c_capabilties
168
+ w3c_capabilities
163
169
  end
164
170
  end
165
171
 
@@ -5,7 +5,7 @@ raise "cwd must be #{root} when reading gemspec" if root != Dir.pwd
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = 'selenium-webdriver'
8
- s.version = '3.4.1'
8
+ s.version = '3.4.2'
9
9
 
10
10
  s.authors = ['Alex Rodionov', 'Titus Fortner']
11
11
  s.email = ['p0deje@gmail.com', 'titusfortner@gmail.com']
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: selenium-webdriver
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 3.4.1
5
+ version: 3.4.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Alex Rodionov
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2017-06-13 00:00:00 +07:00
14
+ date: 2017-06-15 00:00:00 +07:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -96,7 +96,6 @@ extra_rdoc_files: []
96
96
  files:
97
97
  - CHANGES
98
98
  - Gemfile
99
- - Gemfile.lock
100
99
  - LICENSE
101
100
  - README.md
102
101
  - selenium-webdriver.gemspec
@@ -1,54 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- selenium-webdriver (3.4.1)
5
- childprocess (~> 0.5)
6
- rubyzip (~> 1.0)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- addressable (2.5.1)
12
- public_suffix (~> 2.0, >= 2.0.2)
13
- childprocess (0.7.0)
14
- ffi (~> 1.0, >= 1.0.11)
15
- crack (0.4.3)
16
- safe_yaml (~> 1.0.0)
17
- diff-lcs (1.3)
18
- ffi (1.9.18)
19
- hashdiff (0.3.4)
20
- public_suffix (2.0.5)
21
- rack (1.6.8)
22
- rspec (3.6.0)
23
- rspec-core (~> 3.6.0)
24
- rspec-expectations (~> 3.6.0)
25
- rspec-mocks (~> 3.6.0)
26
- rspec-core (3.6.0)
27
- rspec-support (~> 3.6.0)
28
- rspec-expectations (3.6.0)
29
- diff-lcs (>= 1.2.0, < 2.0)
30
- rspec-support (~> 3.6.0)
31
- rspec-mocks (3.6.0)
32
- diff-lcs (>= 1.2.0, < 2.0)
33
- rspec-support (~> 3.6.0)
34
- rspec-support (3.6.0)
35
- rubyzip (1.2.1)
36
- safe_yaml (1.0.4)
37
- webmock (2.3.2)
38
- addressable (>= 2.3.6)
39
- crack (>= 0.3.2)
40
- hashdiff
41
- yard (0.8.7.6)
42
-
43
- PLATFORMS
44
- ruby
45
-
46
- DEPENDENCIES
47
- rack (~> 1.0)
48
- rspec (~> 3.0)
49
- selenium-webdriver!
50
- webmock (~> 2.0)
51
- yard (~> 0.8.7)
52
-
53
- BUNDLED WITH
54
- 1.15.1