selenium-webdriver 3.141.5926 → 3.142.4

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.
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