Skip to content

Commit 677b1ec

Browse files
committed
Ensure CDP socket is closed when driver quits
1 parent 2146a95 commit 677b1ec

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

rb/lib/selenium/webdriver/common/driver.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ def for(browser, opts = {})
7070

7171
def initialize(bridge: nil, listener: nil, **opts)
7272
@service = nil
73+
@devtools = nil
7374
bridge ||= create_bridge(**opts)
7475
add_extensions(bridge.browser)
7576
@bridge = listener ? Support::EventFiringBridge.new(bridge, listener) : bridge
@@ -180,6 +181,7 @@ def quit
180181
bridge.quit
181182
ensure
182183
@service&.stop
184+
@devtools&.close
183185
end
184186

185187
#

rb/lib/selenium/webdriver/devtools.rb

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020
module Selenium
2121
module WebDriver
2222
class DevTools
23+
RESPONSE_WAIT_TIMEOUT = 30
24+
RESPONSE_WAIT_INTERVAL = 0.1
25+
2326
autoload :ConsoleEvent, 'selenium/webdriver/devtools/console_event'
2427
autoload :ExceptionEvent, 'selenium/webdriver/devtools/exception_event'
2528
autoload :MutationEvent, 'selenium/webdriver/devtools/mutation_event'
@@ -37,6 +40,10 @@ def initialize(url:)
3740
start_session
3841
end
3942

43+
def close
44+
socket.close
45+
end
46+
4047
def callbacks
4148
@callbacks ||= Hash.new { |callbacks, event| callbacks[event] = [] }
4249
end
@@ -100,8 +107,8 @@ def attach_socket_listener
100107
next unless message['method']
101108

102109
callbacks[message['method']].each do |callback|
103-
params = message['params'] # take in current thread!
104-
Thread.new { callback.call(params) }
110+
callback_thread = Thread.new(message['params'], &callback)
111+
callback_thread.abort_on_exception = true
105112
end
106113
end
107114
end
@@ -121,7 +128,7 @@ def incoming_frame
121128
end
122129

123130
def wait
124-
@wait ||= Wait.new(timeout: 10, interval: 0.1)
131+
@wait ||= Wait.new(timeout: RESPONSE_WAIT_TIMEOUT, interval: RESPONSE_WAIT_INTERVAL)
125132
end
126133

127134
def socket

0 commit comments

Comments
 (0)