selenium-webdriver 4.35.0 → 4.47.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.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +111 -0
  3. data/Gemfile +1 -4
  4. data/LICENSE +1 -1
  5. data/NOTICE +1 -1
  6. data/README.md +43 -23
  7. data/bin/linux/selenium-manager +0 -0
  8. data/bin/macos/selenium-manager +0 -0
  9. data/bin/selenium-manager-THIRD-PARTY-NOTICES.txt +5971 -0
  10. data/bin/selenium-manager.cdx.json +11629 -0
  11. data/bin/windows/selenium-manager.exe +0 -0
  12. data/lib/selenium/server.rb +30 -5
  13. data/lib/selenium/webdriver/atoms/findElements.js +272 -54
  14. data/lib/selenium/webdriver/atoms/getAttribute.js +152 -6
  15. data/lib/selenium/webdriver/atoms/isDisplayed.js +385 -28
  16. data/lib/selenium/webdriver/bidi/browser.rb +71 -0
  17. data/lib/selenium/webdriver/bidi/browsing_context.rb +3 -2
  18. data/lib/selenium/webdriver/bidi/{log/filter_by.rb → error.rb} +20 -16
  19. data/lib/selenium/webdriver/bidi/log_handler.rb +5 -0
  20. data/lib/selenium/webdriver/bidi/network/cookies.rb +13 -9
  21. data/lib/selenium/webdriver/bidi/network/credentials.rb +4 -0
  22. data/lib/selenium/webdriver/bidi/network/headers.rb +4 -0
  23. data/lib/selenium/webdriver/bidi/network/intercepted_auth.rb +4 -0
  24. data/lib/selenium/webdriver/bidi/network/intercepted_item.rb +4 -0
  25. data/lib/selenium/webdriver/bidi/network/intercepted_request.rb +20 -4
  26. data/lib/selenium/webdriver/bidi/network/intercepted_response.rb +24 -6
  27. data/lib/selenium/webdriver/bidi/network/url_pattern.rb +4 -0
  28. data/lib/selenium/webdriver/bidi/network.rb +18 -9
  29. data/lib/selenium/webdriver/bidi/protocol/bluetooth.rb +495 -0
  30. data/lib/selenium/webdriver/bidi/protocol/browser.rb +250 -0
  31. data/lib/selenium/webdriver/bidi/protocol/browsing_context.rb +798 -0
  32. data/lib/selenium/webdriver/bidi/{log/base_log_entry.rb → protocol/domain.rb} +22 -11
  33. data/lib/selenium/webdriver/bidi/protocol/emulation.rb +448 -0
  34. data/lib/selenium/webdriver/bidi/protocol/error_code.rb +66 -0
  35. data/lib/selenium/webdriver/bidi/protocol/input.rb +354 -0
  36. data/lib/selenium/webdriver/bidi/protocol/log.rb +115 -0
  37. data/lib/selenium/webdriver/bidi/protocol/network.rb +720 -0
  38. data/lib/selenium/webdriver/bidi/protocol/permissions.rb +75 -0
  39. data/lib/selenium/webdriver/bidi/protocol/script.rb +1052 -0
  40. data/lib/selenium/webdriver/bidi/protocol/session.rb +286 -0
  41. data/lib/selenium/webdriver/bidi/protocol/speculation.rb +58 -0
  42. data/lib/selenium/webdriver/bidi/protocol/storage.rb +183 -0
  43. data/lib/selenium/webdriver/bidi/protocol/user_agent_client_hints.rb +88 -0
  44. data/lib/selenium/webdriver/bidi/protocol/web_extension.rb +132 -0
  45. data/lib/selenium/webdriver/bidi/protocol.rb +42 -0
  46. data/lib/selenium/webdriver/bidi/serialization/record.rb +402 -0
  47. data/lib/selenium/webdriver/bidi/serialization/union.rb +156 -0
  48. data/lib/selenium/webdriver/bidi/serialization.rb +90 -0
  49. data/lib/selenium/webdriver/bidi/session.rb +4 -0
  50. data/lib/selenium/webdriver/bidi/support/bidi_generate.rb +1420 -0
  51. data/lib/selenium/webdriver/bidi/support/check_generated.rb +63 -0
  52. data/lib/selenium/webdriver/bidi/transport.rb +57 -0
  53. data/lib/selenium/webdriver/bidi.rb +4 -1
  54. data/lib/selenium/webdriver/chrome/driver.rb +4 -3
  55. data/lib/selenium/webdriver/chrome/service.rb +13 -0
  56. data/lib/selenium/webdriver/chromium/driver.rb +0 -1
  57. data/lib/selenium/webdriver/chromium/options.rb +23 -1
  58. data/lib/selenium/webdriver/chromium/profile.rb +6 -0
  59. data/lib/selenium/webdriver/common/child_process.rb +2 -1
  60. data/lib/selenium/webdriver/common/client_config.rb +97 -0
  61. data/lib/selenium/webdriver/common/driver.rb +13 -7
  62. data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +0 -7
  63. data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +0 -7
  64. data/lib/selenium/webdriver/common/driver_extensions/{has_bidi.rb → has_session_events.rb} +19 -7
  65. data/lib/selenium/webdriver/common/driver_finder.rb +35 -25
  66. data/lib/selenium/webdriver/common/error.rb +10 -3
  67. data/lib/selenium/webdriver/common/local_driver.rb +29 -12
  68. data/lib/selenium/webdriver/common/logger.rb +28 -0
  69. data/lib/selenium/webdriver/common/manager.rb +2 -0
  70. data/lib/selenium/webdriver/common/options.rb +41 -2
  71. data/lib/selenium/webdriver/common/platform.rb +1 -3
  72. data/lib/selenium/webdriver/common/proxy.rb +1 -9
  73. data/lib/selenium/webdriver/common/selenium_manager.rb +2 -1
  74. data/lib/selenium/webdriver/common/service.rb +4 -8
  75. data/lib/selenium/webdriver/common/service_manager.rb +36 -4
  76. data/lib/selenium/webdriver/common/socket_poller.rb +1 -1
  77. data/lib/selenium/webdriver/common/takes_screenshot.rb +1 -1
  78. data/lib/selenium/webdriver/common/virtual_authenticator/credential.rb +1 -1
  79. data/lib/selenium/webdriver/common/wait.rb +4 -1
  80. data/lib/selenium/webdriver/common/websocket_connection.rb +73 -37
  81. data/lib/selenium/webdriver/common.rb +2 -1
  82. data/lib/selenium/webdriver/devtools/response.rb +3 -3
  83. data/lib/selenium/webdriver/devtools.rb +1 -1
  84. data/lib/selenium/webdriver/edge/driver.rb +4 -3
  85. data/lib/selenium/webdriver/edge/service.rb +14 -0
  86. data/lib/selenium/webdriver/firefox/driver.rb +4 -6
  87. data/lib/selenium/webdriver/firefox/options.rb +19 -0
  88. data/lib/selenium/webdriver/firefox/profile.rb +13 -6
  89. data/lib/selenium/webdriver/firefox/service.rb +31 -2
  90. data/lib/selenium/webdriver/ie/driver.rb +4 -3
  91. data/lib/selenium/webdriver/ie/service.rb +10 -0
  92. data/lib/selenium/webdriver/remote/bidi_bridge.rb +44 -10
  93. data/lib/selenium/webdriver/remote/bridge.rb +20 -14
  94. data/lib/selenium/webdriver/remote/driver.rb +15 -4
  95. data/lib/selenium/webdriver/remote/features.rb +26 -1
  96. data/lib/selenium/webdriver/remote/http/common.rb +57 -12
  97. data/lib/selenium/webdriver/remote/http/curb.rb +6 -8
  98. data/lib/selenium/webdriver/remote/http/default.rb +56 -39
  99. data/lib/selenium/webdriver/safari/driver.rb +4 -3
  100. data/lib/selenium/webdriver/safari/options.rb +23 -4
  101. data/lib/selenium/webdriver/safari.rb +1 -6
  102. data/lib/selenium/webdriver/support/block_event_listener.rb +5 -1
  103. data/lib/selenium/webdriver/support/color.rb +14 -14
  104. data/lib/selenium/webdriver/support/event_firing_bridge.rb +5 -1
  105. data/lib/selenium/webdriver/support/guards/guard.rb +30 -14
  106. data/lib/selenium/webdriver/support/guards.rb +11 -4
  107. data/lib/selenium/webdriver/version.rb +1 -1
  108. data/lib/selenium/webdriver.rb +7 -2
  109. data/selenium-webdriver.gemspec +1 -1
  110. metadata +33 -11
  111. data/lib/selenium/webdriver/bidi/log/console_log_entry.rb +0 -35
  112. data/lib/selenium/webdriver/bidi/log/generic_log_entry.rb +0 -33
  113. data/lib/selenium/webdriver/bidi/log/javascript_log_entry.rb +0 -33
  114. data/lib/selenium/webdriver/bidi/log_inspector.rb +0 -147
@@ -20,6 +20,10 @@
20
20
  module Selenium
21
21
  module WebDriver
22
22
  class BiDi
23
+ #
24
+ # @api private
25
+ #
26
+
23
27
  class InterceptedAuth < InterceptedItem
24
28
  def authenticate(username, password)
25
29
  network.continue_with_auth(id, username, password)
@@ -20,6 +20,10 @@
20
20
  module Selenium
21
21
  module WebDriver
22
22
  class BiDi
23
+ #
24
+ # @api private
25
+ #
26
+
23
27
  class InterceptedItem
24
28
  attr_reader :network, :request
25
29
 
@@ -23,6 +23,10 @@ require_relative 'headers'
23
23
  module Selenium
24
24
  module WebDriver
25
25
  class BiDi
26
+ #
27
+ # @api private
28
+ #
29
+
26
30
  class InterceptedRequest < InterceptedItem
27
31
  attr_accessor :method, :url
28
32
  attr_reader :body
@@ -32,14 +36,18 @@ module Selenium
32
36
  @method = nil
33
37
  @url = nil
34
38
  @body = nil
39
+ @headers = nil
40
+ @cookies = nil
35
41
  end
36
42
 
37
43
  def continue
44
+ cookies = @cookies&.as_json
45
+ headers = @headers&.as_json
38
46
  network.continue_request(
39
47
  id: id,
40
48
  body: body,
41
- cookies: cookies.as_json,
42
- headers: headers.as_json,
49
+ cookies: cookies,
50
+ headers: headers,
43
51
  method: method,
44
52
  url: url
45
53
  )
@@ -56,13 +64,21 @@ module Selenium
56
64
  }
57
65
  end
58
66
 
59
- def headers
60
- @headers ||= Headers.new
67
+ def headers=(headers = {})
68
+ @headers = Headers.new(headers)
69
+ end
70
+
71
+ def headers(headers = {})
72
+ @headers ||= Headers.new(headers)
61
73
  end
62
74
 
63
75
  def cookies(cookies = {})
64
76
  @cookies ||= Cookies.new(cookies)
65
77
  end
78
+
79
+ def cookies=(cookies = {})
80
+ @cookies = Cookies.new(cookies)
81
+ end
66
82
  end
67
83
  end # BiDi
68
84
  end # WebDriver
@@ -24,6 +24,10 @@ require_relative 'cookies'
24
24
  module Selenium
25
25
  module WebDriver
26
26
  class BiDi
27
+ #
28
+ # @api private
29
+ #
30
+
27
31
  class InterceptedResponse < InterceptedItem
28
32
  attr_accessor :reason, :status
29
33
  attr_reader :body
@@ -33,13 +37,17 @@ module Selenium
33
37
  @reason = nil
34
38
  @status = nil
35
39
  @body = nil
40
+ @headers = nil
41
+ @cookies = nil
36
42
  end
37
43
 
38
44
  def continue
45
+ cookies = @cookies&.as_json
46
+ headers = @headers&.as_json
39
47
  network.continue_response(
40
48
  id: id,
41
- cookies: cookies.as_json,
42
- headers: headers.as_json,
49
+ cookies: cookies,
50
+ headers: headers,
43
51
  credentials: credentials.as_json,
44
52
  reason: reason,
45
53
  status: status
@@ -47,10 +55,12 @@ module Selenium
47
55
  end
48
56
 
49
57
  def provide_response
58
+ cookies = @cookies&.as_json
59
+ headers = @headers&.as_json
50
60
  network.provide_response(
51
61
  id: id,
52
- cookies: cookies.as_json,
53
- headers: headers.as_json,
62
+ cookies: cookies,
63
+ headers: headers,
54
64
  body: body,
55
65
  reason: reason,
56
66
  status: status
@@ -61,14 +71,22 @@ module Selenium
61
71
  @credentials ||= Credentials.new(username: username, password: password)
62
72
  end
63
73
 
64
- def headers
65
- @headers ||= Headers.new
74
+ def headers(headers = {})
75
+ @headers ||= Headers.new(headers)
76
+ end
77
+
78
+ def headers=(*headers)
79
+ @headers = Headers.new(headers)
66
80
  end
67
81
 
68
82
  def cookies(cookies = {})
69
83
  @cookies ||= Cookies.new(cookies)
70
84
  end
71
85
 
86
+ def cookies=(cookies = {})
87
+ @cookies ||= Cookies.new(cookies)
88
+ end
89
+
72
90
  def body=(value)
73
91
  @body = {
74
92
  type: 'string',
@@ -22,6 +22,10 @@ require 'uri'
22
22
  module Selenium
23
23
  module WebDriver
24
24
  class BiDi
25
+ #
26
+ # @api private
27
+ #
28
+
25
29
  module UrlPattern
26
30
  module_function
27
31
 
@@ -21,6 +21,12 @@ require_relative 'network/url_pattern'
21
21
  module Selenium
22
22
  module WebDriver
23
23
  class BiDi
24
+ # Implements the Navigation Module of the WebDriver-BiDi specification
25
+ # Continue to use functionality from existing `driver.navigate` method
26
+ #
27
+ # @api private
28
+ #
29
+
24
30
  class Network
25
31
  EVENTS = {
26
32
  before_request: 'network.beforeRequestSent',
@@ -82,15 +88,16 @@ module Selenium
82
88
  end
83
89
 
84
90
  def continue_request(**args)
85
- @bidi.send_cmd(
86
- 'network.continueRequest',
91
+ args = {
87
92
  request: args[:id],
88
93
  body: args[:body],
89
94
  cookies: args[:cookies],
90
95
  headers: args[:headers],
91
96
  method: args[:method],
92
97
  url: args[:url]
93
- )
98
+ }.compact
99
+
100
+ @bidi.send_cmd('network.continueRequest', **args)
94
101
  end
95
102
 
96
103
  def fail_request(request_id)
@@ -101,27 +108,29 @@ module Selenium
101
108
  end
102
109
 
103
110
  def continue_response(**args)
104
- @bidi.send_cmd(
105
- 'network.continueResponse',
111
+ args = {
106
112
  request: args[:id],
107
113
  cookies: args[:cookies],
108
114
  credentials: args[:credentials],
109
115
  headers: args[:headers],
110
116
  reasonPhrase: args[:reason],
111
117
  statusCode: args[:status]
112
- )
118
+ }.compact
119
+
120
+ @bidi.send_cmd('network.continueResponse', **args)
113
121
  end
114
122
 
115
123
  def provide_response(**args)
116
- @bidi.send_cmd(
117
- 'network.provideResponse',
124
+ args = {
118
125
  request: args[:id],
119
126
  body: args[:body],
120
127
  cookies: args[:cookies],
121
128
  headers: args[:headers],
122
129
  reasonPhrase: args[:reason],
123
130
  statusCode: args[:status]
124
- )
131
+ }.compact
132
+
133
+ @bidi.send_cmd('network.provideResponse', **args)
125
134
  end
126
135
 
127
136
  def set_cache_behavior(behavior, *contexts)