selenium-webdriver 4.23.0 → 4.31.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.
- checksums.yaml +4 -4
- data/CHANGES +81 -0
- data/Gemfile +3 -0
- data/LICENSE +1 -1
- data/NOTICE +1 -1
- data/README.md +1 -1
- data/bin/linux/selenium-manager +0 -0
- data/bin/macos/selenium-manager +0 -0
- data/bin/windows/selenium-manager.exe +0 -0
- data/lib/selenium/server.rb +1 -1
- data/lib/selenium/webdriver/atoms/findElements.js +50 -118
- data/lib/selenium/webdriver/atoms/getAttribute.js +3 -3
- data/lib/selenium/webdriver/atoms/isDisplayed.js +2 -2
- data/lib/selenium/webdriver/bidi/browsing_context.rb +73 -46
- data/lib/selenium/webdriver/bidi/log_handler.rb +4 -2
- data/lib/selenium/webdriver/{common/driver_extensions/has_web_storage.rb → bidi/network/cookies.rb} +12 -12
- data/lib/selenium/webdriver/{common/html5/shared_web_storage.rb → bidi/network/credentials.rb} +15 -25
- data/lib/selenium/webdriver/bidi/network/headers.rb +38 -0
- data/lib/selenium/webdriver/bidi/{browsing_context_info.rb → network/intercepted_auth.rb} +11 -8
- data/lib/selenium/webdriver/bidi/{navigate_result.rb → network/intercepted_item.rb} +10 -6
- data/lib/selenium/webdriver/{common/html5/session_storage.rb → bidi/network/intercepted_request.rb} +34 -26
- data/lib/selenium/webdriver/bidi/network/intercepted_response.rb +81 -0
- data/lib/selenium/webdriver/bidi/network/url_pattern.rb +65 -0
- data/lib/selenium/webdriver/bidi/network.rb +139 -0
- data/lib/selenium/webdriver/bidi/struct.rb +2 -4
- data/lib/selenium/webdriver/bidi.rb +5 -0
- data/lib/selenium/webdriver/chrome/service.rb +1 -0
- data/lib/selenium/webdriver/chromium/driver.rb +0 -1
- data/lib/selenium/webdriver/common/child_process.rb +20 -14
- data/lib/selenium/webdriver/common/driver.rb +12 -10
- data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +4 -3
- data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +7 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +7 -0
- data/lib/selenium/webdriver/common/error.rb +3 -1
- data/lib/selenium/webdriver/common/fedcm/account.rb +4 -5
- data/lib/selenium/webdriver/common/logger.rb +3 -3
- data/lib/selenium/webdriver/common/manager.rb +1 -1
- data/lib/selenium/webdriver/common/network.rb +102 -0
- data/lib/selenium/webdriver/common/service.rb +11 -4
- data/lib/selenium/webdriver/common/service_manager.rb +1 -0
- data/lib/selenium/webdriver/common/takes_screenshot.rb +1 -0
- data/lib/selenium/webdriver/common/target_locator.rb +3 -2
- data/lib/selenium/webdriver/common/wait.rb +1 -1
- data/lib/selenium/webdriver/common.rb +1 -4
- data/lib/selenium/webdriver/devtools.rb +7 -5
- data/lib/selenium/webdriver/edge/service.rb +1 -1
- data/lib/selenium/webdriver/firefox/driver.rb +0 -19
- data/lib/selenium/webdriver/firefox/service.rb +1 -0
- data/lib/selenium/webdriver/ie/driver.rb +1 -1
- data/lib/selenium/webdriver/ie/service.rb +1 -0
- data/lib/selenium/webdriver/remote/bidi_bridge.rb +22 -0
- data/lib/selenium/webdriver/remote/bridge.rb +3 -53
- data/lib/selenium/webdriver/remote/http/common.rb +2 -0
- data/lib/selenium/webdriver/remote/http/curb.rb +11 -5
- data/lib/selenium/webdriver/remote/response.rb +18 -0
- data/lib/selenium/webdriver/remote.rb +1 -1
- data/lib/selenium/webdriver/safari/driver.rb +1 -2
- data/lib/selenium/webdriver/safari/service.rb +1 -1
- data/lib/selenium/webdriver/support/guards.rb +2 -2
- data/lib/selenium/webdriver/version.rb +1 -1
- data/selenium-webdriver.gemspec +4 -2
- metadata +16 -10
- data/lib/selenium/webdriver/common/html5/local_storage.rb +0 -59
@@ -30,10 +30,8 @@ module Selenium
|
|
30
30
|
DriverExtensions::FullPageScreenshot,
|
31
31
|
DriverExtensions::HasContext,
|
32
32
|
DriverExtensions::HasBiDi,
|
33
|
-
DriverExtensions::HasDevTools,
|
34
33
|
DriverExtensions::HasLogEvents,
|
35
34
|
DriverExtensions::HasNetworkInterception,
|
36
|
-
DriverExtensions::HasWebStorage,
|
37
35
|
DriverExtensions::PrintsPage].freeze
|
38
36
|
|
39
37
|
include LocalDriver
|
@@ -46,23 +44,6 @@ module Selenium
|
|
46
44
|
def browser
|
47
45
|
:firefox
|
48
46
|
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
def devtools_url
|
53
|
-
if capabilities['moz:debuggerAddress'].nil?
|
54
|
-
raise(Error::WebDriverError, 'DevTools is not supported by this version of Firefox; use v85 or higher')
|
55
|
-
end
|
56
|
-
|
57
|
-
uri = URI("http://#{capabilities['moz:debuggerAddress']}")
|
58
|
-
response = Net::HTTP.get(uri.hostname, '/json/version', uri.port)
|
59
|
-
|
60
|
-
JSON.parse(response)['webSocketDebuggerUrl']
|
61
|
-
end
|
62
|
-
|
63
|
-
def devtools_version
|
64
|
-
Firefox::DEVTOOLS_VERSION
|
65
|
-
end
|
66
47
|
end # Driver
|
67
48
|
end # Firefox
|
68
49
|
end # WebDriver
|
@@ -29,6 +29,22 @@ module Selenium
|
|
29
29
|
@bidi = Selenium::WebDriver::BiDi.new(url: socket_url)
|
30
30
|
end
|
31
31
|
|
32
|
+
def get(url)
|
33
|
+
browsing_context.navigate(url)
|
34
|
+
end
|
35
|
+
|
36
|
+
def go_back
|
37
|
+
browsing_context.traverse_history(-1)
|
38
|
+
end
|
39
|
+
|
40
|
+
def go_forward
|
41
|
+
browsing_context.traverse_history(1)
|
42
|
+
end
|
43
|
+
|
44
|
+
def refresh
|
45
|
+
browsing_context.reload
|
46
|
+
end
|
47
|
+
|
32
48
|
def quit
|
33
49
|
super
|
34
50
|
ensure
|
@@ -38,6 +54,12 @@ module Selenium
|
|
38
54
|
def close
|
39
55
|
execute(:close_window).tap { |handles| bidi.close if handles.empty? }
|
40
56
|
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def browsing_context
|
61
|
+
@browsing_context ||= WebDriver::BiDi::BrowsingContext.new(self)
|
62
|
+
end
|
41
63
|
end # BiDiBridge
|
42
64
|
end # Remote
|
43
65
|
end # WebDriver
|
@@ -296,58 +296,6 @@ module Selenium
|
|
296
296
|
execute :take_element_screenshot, id: element
|
297
297
|
end
|
298
298
|
|
299
|
-
#
|
300
|
-
# HTML 5
|
301
|
-
#
|
302
|
-
|
303
|
-
def local_storage_item(key, value = nil)
|
304
|
-
if value
|
305
|
-
execute_script("localStorage.setItem('#{key}', '#{value}')")
|
306
|
-
else
|
307
|
-
execute_script("return localStorage.getItem('#{key}')")
|
308
|
-
end
|
309
|
-
end
|
310
|
-
|
311
|
-
def remove_local_storage_item(key)
|
312
|
-
execute_script("localStorage.removeItem('#{key}')")
|
313
|
-
end
|
314
|
-
|
315
|
-
def local_storage_keys
|
316
|
-
execute_script('return Object.keys(localStorage)')
|
317
|
-
end
|
318
|
-
|
319
|
-
def clear_local_storage
|
320
|
-
execute_script('localStorage.clear()')
|
321
|
-
end
|
322
|
-
|
323
|
-
def local_storage_size
|
324
|
-
execute_script('return localStorage.length')
|
325
|
-
end
|
326
|
-
|
327
|
-
def session_storage_item(key, value = nil)
|
328
|
-
if value
|
329
|
-
execute_script("sessionStorage.setItem('#{key}', '#{value}')")
|
330
|
-
else
|
331
|
-
execute_script("return sessionStorage.getItem('#{key}')")
|
332
|
-
end
|
333
|
-
end
|
334
|
-
|
335
|
-
def remove_session_storage_item(key)
|
336
|
-
execute_script("sessionStorage.removeItem('#{key}')")
|
337
|
-
end
|
338
|
-
|
339
|
-
def session_storage_keys
|
340
|
-
execute_script('return Object.keys(sessionStorage)')
|
341
|
-
end
|
342
|
-
|
343
|
-
def clear_session_storage
|
344
|
-
execute_script('sessionStorage.clear()')
|
345
|
-
end
|
346
|
-
|
347
|
-
def session_storage_size
|
348
|
-
execute_script('return sessionStorage.length')
|
349
|
-
end
|
350
|
-
|
351
299
|
#
|
352
300
|
# javascript execution
|
353
301
|
#
|
@@ -375,6 +323,8 @@ module Selenium
|
|
375
323
|
end
|
376
324
|
|
377
325
|
def delete_cookie(name)
|
326
|
+
raise ArgumentError, 'Cookie name cannot be null or empty' if name.nil? || name.to_s.strip.empty?
|
327
|
+
|
378
328
|
execute :delete_cookie, name: name
|
379
329
|
end
|
380
330
|
|
@@ -676,7 +626,7 @@ module Selenium
|
|
676
626
|
end
|
677
627
|
|
678
628
|
def escaper
|
679
|
-
@escaper ||= defined?(URI::
|
629
|
+
@escaper ||= defined?(URI::RFC2396_PARSER) ? URI::RFC2396_PARSER : URI::DEFAULT_PARSER
|
680
630
|
end
|
681
631
|
|
682
632
|
def commands(command)
|
@@ -48,6 +48,7 @@ module Selenium
|
|
48
48
|
# hook for subclasses - will be called on Driver#quit
|
49
49
|
end
|
50
50
|
|
51
|
+
# steep:ignore:start
|
51
52
|
def call(verb, url, command_hash)
|
52
53
|
url = server_url.merge(url) unless url.is_a?(URI)
|
53
54
|
headers = common_headers.dup
|
@@ -66,6 +67,7 @@ module Selenium
|
|
66
67
|
|
67
68
|
request verb, url, headers, payload
|
68
69
|
end
|
70
|
+
# steep:ignore:end
|
69
71
|
|
70
72
|
private
|
71
73
|
|
@@ -37,6 +37,13 @@ module Selenium
|
|
37
37
|
#
|
38
38
|
|
39
39
|
class Curb < Common
|
40
|
+
attr_accessor :timeout
|
41
|
+
|
42
|
+
def initialize(timeout: nil)
|
43
|
+
@timeout = timeout
|
44
|
+
super()
|
45
|
+
end
|
46
|
+
|
40
47
|
def quit_errors
|
41
48
|
[Curl::Err::RecvError] + super
|
42
49
|
end
|
@@ -53,7 +60,7 @@ module Selenium
|
|
53
60
|
client.headers = headers
|
54
61
|
|
55
62
|
# http://github.com/taf2/curb/issues/issue/33
|
56
|
-
client.head
|
63
|
+
client.head = false
|
57
64
|
client.delete = false
|
58
65
|
|
59
66
|
case verb
|
@@ -80,11 +87,10 @@ module Selenium
|
|
80
87
|
@client ||= begin
|
81
88
|
c = Curl::Easy.new
|
82
89
|
|
83
|
-
c.max_redirects
|
90
|
+
c.max_redirects = MAX_REDIRECTS
|
84
91
|
c.follow_location = true
|
85
|
-
c.timeout
|
86
|
-
c.verbose
|
87
|
-
|
92
|
+
c.timeout = timeout if timeout
|
93
|
+
c.verbose = WebDriver.logger.debug?
|
88
94
|
c
|
89
95
|
end
|
90
96
|
end
|
@@ -58,12 +58,30 @@ module Selenium
|
|
58
58
|
|
59
59
|
def add_cause(ex, error, backtrace)
|
60
60
|
cause = Error::WebDriverError.new
|
61
|
+
backtrace = backtrace_from_remote(backtrace) if backtrace.is_a?(Array)
|
61
62
|
cause.set_backtrace(backtrace)
|
62
63
|
raise ex, cause: cause
|
63
64
|
rescue Error.for_error(error)
|
64
65
|
ex
|
65
66
|
end
|
66
67
|
|
68
|
+
def backtrace_from_remote(server_trace)
|
69
|
+
server_trace.filter_map do |frame|
|
70
|
+
next unless frame.is_a?(Hash)
|
71
|
+
|
72
|
+
file = frame['fileName']
|
73
|
+
line = frame['lineNumber']
|
74
|
+
method = frame['methodName']
|
75
|
+
|
76
|
+
class_name = frame['className']
|
77
|
+
file = "#{class_name}(#{file})" if class_name
|
78
|
+
|
79
|
+
method = 'unknown' if method.nil? || method.empty?
|
80
|
+
|
81
|
+
"[remote server] #{file}:#{line}:in `#{method}'"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
67
85
|
def process_error
|
68
86
|
return unless self['value'].is_a?(Hash)
|
69
87
|
|
@@ -31,7 +31,7 @@ module Selenium
|
|
31
31
|
autoload :Capabilities, 'selenium/webdriver/remote/capabilities'
|
32
32
|
|
33
33
|
module Http
|
34
|
-
autoload :Common,
|
34
|
+
autoload :Common, 'selenium/webdriver/remote/http/common'
|
35
35
|
autoload :Default, 'selenium/webdriver/remote/http/default'
|
36
36
|
end
|
37
37
|
end
|
@@ -27,8 +27,7 @@ module Selenium
|
|
27
27
|
|
28
28
|
class Driver < WebDriver::Driver
|
29
29
|
EXTENSIONS = [DriverExtensions::HasDebugger,
|
30
|
-
DriverExtensions::HasApplePermissions
|
31
|
-
DriverExtensions::HasWebStorage].freeze
|
30
|
+
DriverExtensions::HasApplePermissions].freeze
|
32
31
|
|
33
32
|
include LocalDriver
|
34
33
|
|
@@ -24,7 +24,7 @@ module Selenium
|
|
24
24
|
DEFAULT_PORT = 7050
|
25
25
|
EXECUTABLE = 'safaridriver'
|
26
26
|
SHUTDOWN_SUPPORTED = false
|
27
|
-
|
27
|
+
DRIVER_PATH_ENV_KEY = 'SE_SAFARIDRIVER'
|
28
28
|
def initialize(path: nil, port: nil, log: nil, args: nil)
|
29
29
|
raise Error::WebDriverError, 'Safari Service does not support setting log output' if log
|
30
30
|
|
@@ -37,8 +37,8 @@ module Selenium
|
|
37
37
|
@messages = {}
|
38
38
|
end
|
39
39
|
|
40
|
-
def add_condition(name, condition = nil, &
|
41
|
-
@guard_conditions << GuardCondition.new(name, condition, &
|
40
|
+
def add_condition(name, condition = nil, &block)
|
41
|
+
@guard_conditions << GuardCondition.new(name, condition, &block)
|
42
42
|
end
|
43
43
|
|
44
44
|
def add_message(name, message)
|
data/selenium-webdriver.gemspec
CHANGED
@@ -22,13 +22,15 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.homepage = 'https://selenium.dev'
|
23
23
|
s.metadata = {
|
24
24
|
'changelog_uri' => 'https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES',
|
25
|
+
'documentation_uri' => 'https://www.selenium.dev/documentation/?tab=ruby',
|
25
26
|
'github_repo' => 'ssh://github.com/SeleniumHQ/selenium',
|
26
27
|
'source_code_uri' => 'https://github.com/SeleniumHQ/selenium/tree/trunk/rb',
|
27
|
-
'rubygems_mfa_required' => 'true'
|
28
|
+
'rubygems_mfa_required' => 'true',
|
29
|
+
'funding_uri' => 'https://github.com/sponsors/SeleniumHQ'
|
28
30
|
}
|
29
31
|
|
30
32
|
s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version=
|
31
|
-
s.required_ruby_version = Gem::Requirement.new('>= 3.
|
33
|
+
s.required_ruby_version = Gem::Requirement.new('>= 3.1')
|
32
34
|
|
33
35
|
s.files = [
|
34
36
|
'CHANGES',
|
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: 4.
|
4
|
+
version: 4.31.0
|
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:
|
13
|
+
date: 2025-04-05 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: base64
|
@@ -290,7 +290,6 @@ files:
|
|
290
290
|
- lib/selenium/webdriver/atoms/mutationListener.js
|
291
291
|
- lib/selenium/webdriver/bidi.rb
|
292
292
|
- lib/selenium/webdriver/bidi/browsing_context.rb
|
293
|
-
- lib/selenium/webdriver/bidi/browsing_context_info.rb
|
294
293
|
- lib/selenium/webdriver/bidi/log/base_log_entry.rb
|
295
294
|
- lib/selenium/webdriver/bidi/log/console_log_entry.rb
|
296
295
|
- lib/selenium/webdriver/bidi/log/filter_by.rb
|
@@ -298,7 +297,15 @@ files:
|
|
298
297
|
- lib/selenium/webdriver/bidi/log/javascript_log_entry.rb
|
299
298
|
- lib/selenium/webdriver/bidi/log_handler.rb
|
300
299
|
- lib/selenium/webdriver/bidi/log_inspector.rb
|
301
|
-
- lib/selenium/webdriver/bidi/
|
300
|
+
- lib/selenium/webdriver/bidi/network.rb
|
301
|
+
- lib/selenium/webdriver/bidi/network/cookies.rb
|
302
|
+
- lib/selenium/webdriver/bidi/network/credentials.rb
|
303
|
+
- lib/selenium/webdriver/bidi/network/headers.rb
|
304
|
+
- lib/selenium/webdriver/bidi/network/intercepted_auth.rb
|
305
|
+
- lib/selenium/webdriver/bidi/network/intercepted_item.rb
|
306
|
+
- lib/selenium/webdriver/bidi/network/intercepted_request.rb
|
307
|
+
- lib/selenium/webdriver/bidi/network/intercepted_response.rb
|
308
|
+
- lib/selenium/webdriver/bidi/network/url_pattern.rb
|
302
309
|
- lib/selenium/webdriver/bidi/session.rb
|
303
310
|
- lib/selenium/webdriver/bidi/struct.rb
|
304
311
|
- lib/selenium/webdriver/chrome.rb
|
@@ -338,7 +345,6 @@ files:
|
|
338
345
|
- lib/selenium/webdriver/common/driver_extensions/has_permissions.rb
|
339
346
|
- lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb
|
340
347
|
- lib/selenium/webdriver/common/driver_extensions/has_session_id.rb
|
341
|
-
- lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb
|
342
348
|
- lib/selenium/webdriver/common/driver_extensions/prints_page.rb
|
343
349
|
- lib/selenium/webdriver/common/driver_extensions/uploads_files.rb
|
344
350
|
- lib/selenium/webdriver/common/driver_finder.rb
|
@@ -348,9 +354,6 @@ files:
|
|
348
354
|
- lib/selenium/webdriver/common/fedcm/account.rb
|
349
355
|
- lib/selenium/webdriver/common/fedcm/dialog.rb
|
350
356
|
- lib/selenium/webdriver/common/file_reaper.rb
|
351
|
-
- lib/selenium/webdriver/common/html5/local_storage.rb
|
352
|
-
- lib/selenium/webdriver/common/html5/session_storage.rb
|
353
|
-
- lib/selenium/webdriver/common/html5/shared_web_storage.rb
|
354
357
|
- lib/selenium/webdriver/common/interactions/input_device.rb
|
355
358
|
- lib/selenium/webdriver/common/interactions/interaction.rb
|
356
359
|
- lib/selenium/webdriver/common/interactions/interactions.rb
|
@@ -376,6 +379,7 @@ files:
|
|
376
379
|
- lib/selenium/webdriver/common/logs.rb
|
377
380
|
- lib/selenium/webdriver/common/manager.rb
|
378
381
|
- lib/selenium/webdriver/common/navigation.rb
|
382
|
+
- lib/selenium/webdriver/common/network.rb
|
379
383
|
- lib/selenium/webdriver/common/options.rb
|
380
384
|
- lib/selenium/webdriver/common/platform.rb
|
381
385
|
- lib/selenium/webdriver/common/port_prober.rb
|
@@ -463,9 +467,11 @@ licenses:
|
|
463
467
|
- Apache-2.0
|
464
468
|
metadata:
|
465
469
|
changelog_uri: https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES
|
470
|
+
documentation_uri: https://www.selenium.dev/documentation/?tab=ruby
|
466
471
|
github_repo: ssh://github.com/SeleniumHQ/selenium
|
467
472
|
source_code_uri: https://github.com/SeleniumHQ/selenium/tree/trunk/rb
|
468
473
|
rubygems_mfa_required: 'true'
|
474
|
+
funding_uri: https://github.com/sponsors/SeleniumHQ
|
469
475
|
post_install_message:
|
470
476
|
rdoc_options: []
|
471
477
|
require_paths:
|
@@ -474,14 +480,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
474
480
|
requirements:
|
475
481
|
- - ">="
|
476
482
|
- !ruby/object:Gem::Version
|
477
|
-
version: '3.
|
483
|
+
version: '3.1'
|
478
484
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
479
485
|
requirements:
|
480
486
|
- - ">"
|
481
487
|
- !ruby/object:Gem::Version
|
482
488
|
version: 1.3.1
|
483
489
|
requirements: []
|
484
|
-
rubygems_version: 3.
|
490
|
+
rubygems_version: 3.3.27
|
485
491
|
signing_key:
|
486
492
|
specification_version: 4
|
487
493
|
summary: Selenium is a browser automation tool for automated testing of webapps and
|
@@ -1,59 +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 HTML5
|
23
|
-
class LocalStorage
|
24
|
-
include SharedWebStorage
|
25
|
-
|
26
|
-
#
|
27
|
-
# @api private
|
28
|
-
#
|
29
|
-
def initialize(bridge)
|
30
|
-
@bridge = bridge
|
31
|
-
end
|
32
|
-
|
33
|
-
def [](key)
|
34
|
-
@bridge.local_storage_item key
|
35
|
-
end
|
36
|
-
|
37
|
-
def []=(key, value)
|
38
|
-
@bridge.local_storage_item key, value
|
39
|
-
end
|
40
|
-
|
41
|
-
def delete(key)
|
42
|
-
@bridge.remove_local_storage_item key
|
43
|
-
end
|
44
|
-
|
45
|
-
def clear
|
46
|
-
@bridge.clear_local_storage
|
47
|
-
end
|
48
|
-
|
49
|
-
def size
|
50
|
-
@bridge.local_storage_size
|
51
|
-
end
|
52
|
-
|
53
|
-
def keys
|
54
|
-
@bridge.local_storage_keys.reverse
|
55
|
-
end
|
56
|
-
end # LocalStorage
|
57
|
-
end # HTML5
|
58
|
-
end # WebDriver
|
59
|
-
end # Selenium
|