selenium-webdriver 3.141.5926 → 3.142.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 98597f8b669dbd074c696ddca89ec8c4a3fd9cd9
4
- data.tar.gz: '097e90bbf9abb8a1a7cccce8fbcad9b7ad674990'
3
+ metadata.gz: 4b75c8768c4e57d00ee16b2ce24fb7531074c89a
4
+ data.tar.gz: 84c67463ae2e1601cb0f6e57b89d0350aa5f35f6
5
5
  SHA512:
6
- metadata.gz: c8020fbcea75fd5aeef8ab8d8b2ed74667291d3166ed55a9cad23be3319824355579306bf62e2cd342b22ea5c41ec8571940378ca374d327fdff8c3bc837f35b
7
- data.tar.gz: 138443d80b20220f2d008a33e283db77c34756fe0215edb95b584762ed186658c2b73cf77c945cd42e003dca5f6aba142b620c286eba3119898b5f2437d1c58a
6
+ metadata.gz: 5727d2019f0648bf85d9d7ba99a7d85f2f5e5a0248566b802290814f64f90f0b035d1fc4a36e6e00bfbe6b4b6a9633768aa6ba576bc58ee6a0648ed960ca78e2
7
+ data.tar.gz: 84d07768e3743275502cc0c546c943b27e97657e5dedfe9bb18891e379e1a814a308c681f5ba77cf4fc51e45320f0f7b566ad16ec7013536cd94276b064274d0
data/CHANGES CHANGED
@@ -1,3 +1,49 @@
1
+ 3.142.4 (2019-09-02)
2
+ ====================
3
+
4
+ Chrome:
5
+ * Added support for new command for getting logs in ChromeDriver 76+
6
+ with W3C mode on
7
+
8
+ 3.142.3 (2019-05-21)
9
+ ====================
10
+
11
+ Firefox:
12
+ * Fixed a regression when Firefox binary path was not sent to GeckoDriver
13
+ by default and browser could not be located (issue #7219)
14
+
15
+
16
+ 3.142.2 (2019-05-11)
17
+ ====================
18
+
19
+ Chrome:
20
+ * Fixed an issue when getting/setting network conditions and sending CDP
21
+ commands didn't work with Grid (issue #7174)
22
+
23
+ Safari:
24
+ * Fixed an issue when getting/setting permissions and attaching debugger
25
+ didn't work with Grid (issue #7174)
26
+
27
+ 3.142.1 (2019-05-07)
28
+ ====================
29
+
30
+ Firefox:
31
+ * Fixed an issue when processing error in legacy driver would result
32
+ in NoMethodError (issue #7178)
33
+
34
+ 3.142.0 (2019-04-24)
35
+ ====================
36
+
37
+ Ruby:
38
+ * Fixed an issue when services are not shutdown properly
39
+
40
+ Firefox:
41
+ * Fixed an issue when passing :profile string to Firefox::Options.new would
42
+ result in NoMethodError. Now it will find a profile with such name on your
43
+ system and use it accordingly (issue #7119)
44
+ * Fixed an issue when instantiating Firefox driver with capabilities having
45
+ :marionette would result in NoMethodError (issue #7120)
46
+
1
47
  3.141.5926 (2019-04-18)
2
48
  =======================
3
49
 
@@ -23,9 +23,11 @@ module Selenium
23
23
  module Bridge
24
24
 
25
25
  COMMANDS = {
26
- get_network_conditions: [:get, '/session/:session_id/chromium/network_conditions'],
27
- set_network_conditions: [:post, '/session/:session_id/chromium/network_conditions'],
28
- send_command: [:post, '/session/:session_id/goog/cdp/execute']
26
+ get_network_conditions: [:get, 'session/:session_id/chromium/network_conditions'],
27
+ set_network_conditions: [:post, 'session/:session_id/chromium/network_conditions'],
28
+ send_command: [:post, 'session/:session_id/goog/cdp/execute'],
29
+ get_available_log_types: [:get, 'session/:session_id/se/log/types'],
30
+ get_log: [:post, 'session/:session_id/se/log']
29
31
  }.freeze
30
32
 
31
33
  def commands(command)
@@ -44,6 +46,22 @@ module Selenium
44
46
  execute :set_network_conditions, {}, {network_conditions: conditions}
45
47
  end
46
48
 
49
+ def available_log_types
50
+ types = execute :get_available_log_types
51
+ Array(types).map(&:to_sym)
52
+ end
53
+
54
+ def log(type)
55
+ data = execute :get_log, {}, {type: type.to_s}
56
+
57
+ Array(data).map do |l|
58
+ begin
59
+ LogEntry.new l.fetch('level', 'UNKNOWN'), l.fetch('timestamp'), l.fetch('message')
60
+ rescue KeyError
61
+ next
62
+ end
63
+ end
64
+ end
47
65
  end # Bridge
48
66
  end # Chrome
49
67
  end # WebDriver
@@ -35,27 +35,40 @@ module Selenium
35
35
  @missing_text = nil
36
36
 
37
37
  class << self
38
- attr_reader :default_port, :driver_path, :executable, :missing_text
38
+ attr_reader :default_port, :driver_path, :executable, :missing_text, :shutdown_supported
39
39
 
40
- def chrome(*args)
41
- Chrome::Service.new(*args)
40
+ def chrome(**opts)
41
+ Chrome::Service.new(**opts)
42
42
  end
43
43
 
44
- def firefox(*args)
45
- Firefox::Service.new(*args)
44
+ def firefox(**opts)
45
+ binary_path = Firefox::Binary.path
46
+ args = opts.delete(:args)
47
+ case args
48
+ when Hash
49
+ args[:binary] ||= binary_path
50
+ opts[:args] = args
51
+ when Array
52
+ opts[:args] = ["--binary=#{binary_path}"]
53
+ opts[:args] += args
54
+ else
55
+ opts[:args] = ["--binary=#{binary_path}"]
56
+ end
57
+
58
+ Firefox::Service.new(**opts)
46
59
  end
47
60
 
48
- def ie(*args)
49
- IE::Service.new(*args)
61
+ def ie(**opts)
62
+ IE::Service.new(**opts)
50
63
  end
51
64
  alias_method :internet_explorer, :ie
52
65
 
53
- def edge(*args)
54
- Edge::Service.new(*args)
66
+ def edge(**opts)
67
+ Edge::Service.new(**opts)
55
68
  end
56
69
 
57
- def safari(*args)
58
- Safari::Service.new(*args)
70
+ def safari(**opts)
71
+ Safari::Service.new(**opts)
59
72
  end
60
73
 
61
74
  def driver_path=(path)
@@ -100,7 +113,7 @@ module Selenium
100
113
  end
101
114
 
102
115
  def stop
103
- return unless @shutdown_supported
116
+ return unless self.class.shutdown_supported
104
117
 
105
118
  stop_server
106
119
  @process.poll_for_exit STOP_TIMEOUT
@@ -130,8 +130,8 @@ module Selenium
130
130
  @path = Platform.cygwin_path(@path, windows: true) if Platform.cygwin?
131
131
 
132
132
  unless File.file?(@path.to_s)
133
- error = "Could not find Firefox binary (os=#{Platform.os}). "
134
- error << "Make sure Firefox is installed or set the path manually with #{self}.path="
133
+ error = "Could not find Firefox binary (os=#{Platform.os}). " \
134
+ "Make sure Firefox is installed or set the path manually with #{self}.path="
135
135
  raise Error::WebDriverError, error
136
136
  end
137
137
 
@@ -39,7 +39,8 @@ module Selenium
39
39
  private
40
40
 
41
41
  def marionette?(opts)
42
- opts.delete(:marionette) != false && (opts.dig(:desired_capabilities, :marionette) != false)
42
+ opts.delete(:marionette) != false &&
43
+ (!opts[:desired_capabilities] || opts[:desired_capabilities][:marionette] != false)
43
44
  end
44
45
  end
45
46
 
@@ -45,7 +45,7 @@ module Selenium
45
45
  def initialize(**opts)
46
46
  @args = Set.new(opts.delete(:args) || [])
47
47
  @binary = opts.delete(:binary)
48
- @profile = opts.delete(:profile)
48
+ @profile = process_profile(opts.delete(:profile))
49
49
  @log_level = opts.delete(:log_level)
50
50
  @prefs = opts.delete(:prefs) || {}
51
51
  @options = opts.delete(:options) || {}
@@ -123,11 +123,7 @@ module Selenium
123
123
  #
124
124
 
125
125
  def profile=(profile)
126
- @profile = if profile.is_a?(Profile)
127
- profile
128
- else
129
- Profile.from_name(profile)
130
- end
126
+ @profile = process_profile(profile)
131
127
  end
132
128
 
133
129
  #
@@ -145,6 +141,21 @@ module Selenium
145
141
 
146
142
  {KEY => opts}
147
143
  end
144
+
145
+ private
146
+
147
+ def process_profile(profile)
148
+ return unless profile
149
+
150
+ case profile
151
+ when Profile
152
+ profile
153
+ when String
154
+ Profile.from_name(profile)
155
+ else
156
+ raise Error::WebDriverError, "don't know how to handle profile: #{profile.inspect}"
157
+ end
158
+ end
148
159
  end # Options
149
160
  end # Firefox
150
161
  end # WebDriver
@@ -79,9 +79,11 @@ module Selenium
79
79
  def add_backtrace(ex)
80
80
  return unless error_payload.is_a?(Hash)
81
81
 
82
+ # Legacy Firefox returns String in ['value'], while we expect Hash.
83
+ # Use #dig when Firefox legacy is removed (4.0).
82
84
  server_trace = error_payload[STACKTRACE_KEY] ||
83
85
  error_payload[STACKTRACE_KEY.downcase] ||
84
- error_payload.dig('value', STACKTRACE_KEY)
86
+ (error_payload['value'] && error_payload['value'][STACKTRACE_KEY])
85
87
  return unless server_trace
86
88
 
87
89
  backtrace = case server_trace
@@ -24,9 +24,9 @@ module Selenium
24
24
 
25
25
  # https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/WebDriverEndpointDoc/Commands/Commands.html
26
26
  COMMANDS = {
27
- get_permissions: [:get, '/session/:session_id/apple/permissions'],
28
- set_permissions: [:post, '/session/:session_id/apple/permissions'],
29
- attach_debugger: [:post, '/session/:session_id/apple/attach_debugger']
27
+ get_permissions: [:get, 'session/:session_id/apple/permissions'],
28
+ set_permissions: [:post, 'session/:session_id/apple/permissions'],
29
+ attach_debugger: [:post, 'session/:session_id/apple/attach_debugger']
30
30
  }.freeze
31
31
 
32
32
  def commands(command)
@@ -19,6 +19,6 @@
19
19
 
20
20
  module Selenium
21
21
  module WebDriver
22
- VERSION = '3.141.5926'
22
+ VERSION = '3.142.4'
23
23
  end # WebDriver
24
24
  end # Selenium
@@ -31,7 +31,7 @@ Gem::Specification.new do |s|
31
31
  s.files = Dir[root + '/**/*'].reject { |e| e =~ /ruby\.iml|build\.desc/ }.map { |e| e.sub(root + '/', '') }
32
32
  s.require_paths = ['lib']
33
33
 
34
- s.add_runtime_dependency 'childprocess', ['>= 0.5', '< 2.0']
34
+ s.add_runtime_dependency 'childprocess', ['>= 0.5', '< 3.0']
35
35
  s.add_runtime_dependency 'rubyzip', ['~> 1.2', '>= 1.2.2']
36
36
 
37
37
  # childprocess requires ffi on windows but doesn't declare it in its dependencies
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selenium-webdriver
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.141.5926
4
+ version: 3.142.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Rodionov
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-04-18 00:00:00.000000000 Z
13
+ date: 2019-09-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  requirement: !ruby/object:Gem::Requirement
@@ -20,7 +20,7 @@ dependencies:
20
20
  version: '0.5'
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: '2.0'
23
+ version: '3.0'
24
24
  name: childprocess
25
25
  prerelease: false
26
26
  type: :runtime
@@ -31,7 +31,7 @@ dependencies:
31
31
  version: '0.5'
32
32
  - - "<"
33
33
  - !ruby/object:Gem::Version
34
- version: '2.0'
34
+ version: '3.0'
35
35
  - !ruby/object:Gem::Dependency
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
@@ -246,7 +246,6 @@ files:
246
246
  - lib/selenium/webdriver/common/manager.rb
247
247
  - lib/selenium/webdriver/common/mouse.rb
248
248
  - lib/selenium/webdriver/common/navigation.rb
249
- - lib/selenium/webdriver/common/options.rb
250
249
  - lib/selenium/webdriver/common/platform.rb
251
250
  - lib/selenium/webdriver/common/port_prober.rb
252
251
  - lib/selenium/webdriver/common/profile_helper.rb
@@ -261,7 +260,6 @@ files:
261
260
  - lib/selenium/webdriver/common/touch_screen.rb
262
261
  - lib/selenium/webdriver/common/w3c_action_builder.rb
263
262
  - lib/selenium/webdriver/common/w3c_manager.rb
264
- - lib/selenium/webdriver/common/w3c_options.rb
265
263
  - lib/selenium/webdriver/common/wait.rb
266
264
  - lib/selenium/webdriver/common/window.rb
267
265
  - lib/selenium/webdriver/common/zipper.rb
@@ -272,7 +270,6 @@ files:
272
270
  - lib/selenium/webdriver/edge/service.rb
273
271
  - lib/selenium/webdriver/firefox.rb
274
272
  - lib/selenium/webdriver/firefox/binary.rb
275
- - lib/selenium/webdriver/firefox/bridge.rb
276
273
  - lib/selenium/webdriver/firefox/driver.rb
277
274
  - lib/selenium/webdriver/firefox/extension.rb
278
275
  - lib/selenium/webdriver/firefox/extension/prefs.json
@@ -295,7 +292,6 @@ files:
295
292
  - lib/selenium/webdriver/remote.rb
296
293
  - lib/selenium/webdriver/remote/bridge.rb
297
294
  - lib/selenium/webdriver/remote/capabilities.rb
298
- - lib/selenium/webdriver/remote/commands.rb
299
295
  - lib/selenium/webdriver/remote/driver.rb
300
296
  - lib/selenium/webdriver/remote/http/common.rb
301
297
  - lib/selenium/webdriver/remote/http/curb.rb
@@ -1,177 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module WebDriver
22
- class Options
23
- #
24
- # @api private
25
- #
26
-
27
- def initialize(bridge)
28
- @bridge = bridge
29
- end
30
-
31
- #
32
- # Add a cookie to the browser
33
- #
34
- # @param [Hash] opts the options to create a cookie with.
35
- # @option opts [String] :name A name
36
- # @option opts [String] :value A value
37
- # @option opts [String] :path ('/') A path
38
- # @option opts [String] :secure (false) A boolean
39
- # @option opts [Time,DateTime,Numeric,nil] :expires (nil) Expiry date, either as a Time, DateTime, or seconds since epoch.
40
- #
41
- # @raise [ArgumentError] if :name or :value is not specified
42
- #
43
-
44
- def add_cookie(opts = {})
45
- raise ArgumentError, 'name is required' unless opts[:name]
46
- raise ArgumentError, 'value is required' unless opts[:value]
47
-
48
- opts[:path] ||= '/'
49
- opts[:secure] ||= false
50
-
51
- obj = opts.delete(:expires)
52
- opts[:expiry] = seconds_from(obj).to_i if obj
53
-
54
- @bridge.add_cookie opts
55
- end
56
-
57
- #
58
- # Get the cookie with the given name
59
- #
60
- # @param [String] name the name of the cookie
61
- # @return [Hash, nil] the cookie, or nil if it wasn't found.
62
- #
63
-
64
- def cookie_named(name)
65
- all_cookies.find { |c| c[:name] == name }
66
- end
67
-
68
- #
69
- # Delete the cookie with the given name
70
- #
71
- # @param [String] name the name of the cookie to delete
72
- #
73
-
74
- def delete_cookie(name)
75
- @bridge.delete_cookie name
76
- end
77
-
78
- #
79
- # Delete all cookies
80
- #
81
-
82
- def delete_all_cookies
83
- @bridge.delete_all_cookies
84
- end
85
-
86
- #
87
- # Get all cookies
88
- #
89
- # @return [Array<Hash>] list of cookies
90
- #
91
-
92
- def all_cookies
93
- @bridge.cookies.map { |cookie| convert_cookie(cookie) }
94
- end
95
-
96
- def timeouts
97
- @timeouts ||= Timeouts.new(@bridge)
98
- end
99
-
100
- #
101
- # @api beta This API may be changed or removed in a future release.
102
- #
103
-
104
- def logs
105
- @logs ||= Logs.new(@bridge)
106
- end
107
-
108
- #
109
- # Create a new top-level browsing context
110
- # https://w3c.github.io/webdriver/#new-window
111
- # @param type [Symbol] Supports two values: :tab and :window.
112
- # Use :tab if you'd like the new window to share an OS-level window
113
- # with the current browsing context.
114
- # Use :window otherwise
115
- # @return [String] The value of the window handle
116
- #
117
- def new_window(type = :tab)
118
- case type
119
- when :tab, :window
120
- result = @bridge.new_window(type)
121
- unless result.key?('handle')
122
- raise UnknownError, "the driver did not return a handle. " \
123
- "The returned result: #{result.inspect}"
124
- end
125
- result['handle']
126
- else
127
- raise ArgumentError, "invalid argument for type. Got: '#{type.inspect}'. " \
128
- "Try :tab or :window"
129
- end
130
- end
131
-
132
- #
133
- # @api beta This API may be changed or removed in a future release.
134
- #
135
-
136
- def window
137
- @window ||= Window.new(@bridge)
138
- end
139
-
140
- private
141
-
142
- SECONDS_PER_DAY = 86_400.0
143
-
144
- def datetime_at(int)
145
- DateTime.civil(1970) + (int / SECONDS_PER_DAY)
146
- end
147
-
148
- def seconds_from(obj)
149
- case obj
150
- when Time
151
- obj.to_f
152
- when DateTime
153
- (obj - DateTime.civil(1970)) * SECONDS_PER_DAY
154
- when Numeric
155
- obj
156
- else
157
- raise ArgumentError, "invalid value for expiration date: #{obj.inspect}"
158
- end
159
- end
160
-
161
- def strip_port(str)
162
- str.split(':', 2).first
163
- end
164
-
165
- def convert_cookie(cookie)
166
- {
167
- name: cookie['name'],
168
- value: cookie['value'],
169
- path: cookie['path'],
170
- domain: cookie['domain'] && strip_port(cookie['domain']),
171
- expires: cookie['expiry'] && datetime_at(cookie['expiry']),
172
- secure: cookie['secure']
173
- }
174
- end
175
- end # Options
176
- end # WebDriver
177
- end # Selenium
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module WebDriver
22
- class W3COptions < Options
23
-
24
- #
25
- # Get the cookie with the given name
26
- #
27
- # @param [String] name the name of the cookie
28
- # @return [Hash, nil] the cookie, or nil if it wasn't found.
29
- #
30
-
31
- def cookie_named(name)
32
- convert_cookie(@bridge.cookie(name))
33
- end
34
-
35
- #
36
- # Delete all cookies
37
- #
38
-
39
- def delete_all_cookies
40
- @bridge.delete_all_cookies
41
- end
42
-
43
- end # WC3Options
44
- end # WebDriver
45
- end # Selenium
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module WebDriver
22
- module Firefox
23
- module Bridge
24
-
25
- COMMANDS = {
26
- install_addon: [:post, 'session/:session_id/moz/addon/install'],
27
- uninstall_addon: [:post, 'session/:session_id/moz/addon/uninstall']
28
- }.freeze
29
-
30
- def commands(command)
31
- COMMANDS[command] || super
32
- end
33
-
34
- def install_addon(path, temporary)
35
- payload = {path: path}
36
- payload[:temporary] = temporary unless temporary.nil?
37
- execute :install_addon, {}, payload
38
- end
39
-
40
- def uninstall_addon(id)
41
- execute :uninstall_addon, {}, {id: id}
42
- end
43
-
44
- end # Bridge
45
- end # Firefox
46
- end # WebDriver
47
- end # Selenium
@@ -1,156 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Licensed to the Software Freedom Conservancy (SFC) under one
4
- # or more contributor license agreements. See the NOTICE file
5
- # distributed with this work for additional information
6
- # regarding copyright ownership. The SFC licenses this file
7
- # to you under the Apache License, Version 2.0 (the
8
- # "License"); you may not use this file except in compliance
9
- # with the License. You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing,
14
- # software distributed under the License is distributed on an
15
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
- # KIND, either express or implied. See the License for the
17
- # specific language governing permissions and limitations
18
- # under the License.
19
-
20
- module Selenium
21
- module WebDriver
22
- module Remote
23
-
24
- #
25
- # https://w3c.github.io/webdriver/#endpoints
26
- # @api private
27
- #
28
-
29
- class Bridge
30
- COMMANDS = {
31
- status: [:get, 'status'],
32
-
33
- #
34
- # session handling
35
- #
36
-
37
- new_session: [:post, 'session'],
38
- delete_session: [:delete, 'session/:session_id'],
39
-
40
- #
41
- # basic driver
42
- #
43
-
44
- get: [:post, 'session/:session_id/url'],
45
- get_current_url: [:get, 'session/:session_id/url'],
46
- back: [:post, 'session/:session_id/back'],
47
- forward: [:post, 'session/:session_id/forward'],
48
- refresh: [:post, 'session/:session_id/refresh'],
49
- get_title: [:get, 'session/:session_id/title'],
50
-
51
- #
52
- # window and Frame handling
53
- #
54
-
55
- get_window_handle: [:get, 'session/:session_id/window'],
56
- new_window: [:post, 'session/:session_id/window/new'],
57
- close_window: [:delete, 'session/:session_id/window'],
58
- switch_to_window: [:post, 'session/:session_id/window'],
59
- get_window_handles: [:get, 'session/:session_id/window/handles'],
60
- fullscreen_window: [:post, 'session/:session_id/window/fullscreen'],
61
- minimize_window: [:post, 'session/:session_id/window/minimize'],
62
- maximize_window: [:post, 'session/:session_id/window/maximize'],
63
- set_window_size: [:post, 'session/:session_id/window/size'],
64
- get_window_size: [:get, 'session/:session_id/window/size'],
65
- set_window_position: [:post, 'session/:session_id/window/position'],
66
- get_window_position: [:get, 'session/:session_id/window/position'],
67
- set_window_rect: [:post, 'session/:session_id/window/rect'],
68
- get_window_rect: [:get, 'session/:session_id/window/rect'],
69
- switch_to_frame: [:post, 'session/:session_id/frame'],
70
- switch_to_parent_frame: [:post, 'session/:session_id/frame/parent'],
71
-
72
- #
73
- # element
74
- #
75
-
76
- find_element: [:post, 'session/:session_id/element'],
77
- find_elements: [:post, 'session/:session_id/elements'],
78
- find_child_element: [:post, 'session/:session_id/element/:id/element'],
79
- find_child_elements: [:post, 'session/:session_id/element/:id/elements'],
80
- get_active_element: [:get, 'session/:session_id/element/active'],
81
- is_element_selected: [:get, 'session/:session_id/element/:id/selected'],
82
- get_element_attribute: [:get, 'session/:session_id/element/:id/attribute/:name'],
83
- get_element_property: [:get, 'session/:session_id/element/:id/property/:name'],
84
- get_element_css_value: [:get, 'session/:session_id/element/:id/css/:property_name'],
85
- get_element_text: [:get, 'session/:session_id/element/:id/text'],
86
- get_element_tag_name: [:get, 'session/:session_id/element/:id/name'],
87
- get_element_rect: [:get, 'session/:session_id/element/:id/rect'],
88
- is_element_enabled: [:get, 'session/:session_id/element/:id/enabled'],
89
-
90
- #
91
- # document handling
92
- #
93
-
94
- get_page_source: [:get, 'session/:session_id/source'],
95
- execute_script: [:post, 'session/:session_id/execute/sync'],
96
- execute_async_script: [:post, 'session/:session_id/execute/async'],
97
-
98
- #
99
- # cookies
100
- #
101
-
102
- get_all_cookies: [:get, 'session/:session_id/cookie'],
103
- get_cookie: [:get, 'session/:session_id/cookie/:name'],
104
- add_cookie: [:post, 'session/:session_id/cookie'],
105
- delete_cookie: [:delete, 'session/:session_id/cookie/:name'],
106
- delete_all_cookies: [:delete, 'session/:session_id/cookie'],
107
-
108
- #
109
- # timeouts
110
- #
111
-
112
- set_timeout: [:post, 'session/:session_id/timeouts'],
113
-
114
- #
115
- # actions
116
- #
117
-
118
- actions: [:post, 'session/:session_id/actions'],
119
- release_actions: [:delete, 'session/:session_id/actions'],
120
-
121
- #
122
- # Element Operations
123
- #
124
-
125
- element_click: [:post, 'session/:session_id/element/:id/click'],
126
- element_tap: [:post, 'session/:session_id/element/:id/tap'],
127
- element_clear: [:post, 'session/:session_id/element/:id/clear'],
128
- element_send_keys: [:post, 'session/:session_id/element/:id/value'],
129
-
130
- #
131
- # alerts
132
- #
133
-
134
- dismiss_alert: [:post, 'session/:session_id/alert/dismiss'],
135
- accept_alert: [:post, 'session/:session_id/alert/accept'],
136
- get_alert_text: [:get, 'session/:session_id/alert/text'],
137
- send_alert_text: [:post, 'session/:session_id/alert/text'],
138
-
139
- #
140
- # screenshot
141
- #
142
-
143
- take_screenshot: [:get, 'session/:session_id/screenshot'],
144
- take_element_screenshot: [:get, 'session/:session_id/element/:id/screenshot'],
145
-
146
- #
147
- # server extensions
148
- #
149
-
150
- upload_file: [:post, 'session/:session_id/se/file']
151
- }.freeze
152
-
153
- end # Bridge
154
- end # Remote
155
- end # WebDriver
156
- end # Selenium