Skip to content

Commit 6f60704

Browse files
committed
marked add/remove_intercept() private, added clear_request_handlers()
1 parent b1299c8 commit 6f60704

File tree

2 files changed

+40
-7
lines changed

2 files changed

+40
-7
lines changed

py/selenium/webdriver/common/bidi/network.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def command_builder(self, method, params):
6363
cmd = yield command
6464
return cmd
6565

66-
def add_intercept(self, phases=[], contexts=None, url_patterns=None):
66+
def _add_intercept(self, phases=[], contexts=None, url_patterns=None):
6767
"""Add an intercept to the network.
6868
6969
Parameters:
@@ -94,7 +94,7 @@ def add_intercept(self, phases=[], contexts=None, url_patterns=None):
9494
self.intercepts.append(result["intercept"])
9595
return result
9696

97-
def remove_intercept(self, intercept=None):
97+
def _remove_intercept(self, intercept=None):
9898
"""Remove a specific intercept, or all intercepts.
9999
100100
Parameters:
@@ -183,7 +183,7 @@ def add_request_handler(self, event, callback, url_patterns=None, contexts=None)
183183
except KeyError:
184184
raise Exception(f"Event {event} not found")
185185

186-
result = self.add_intercept(phases=[phase_name], url_patterns=url_patterns, contexts=contexts)
186+
result = self._add_intercept(phases=[phase_name], url_patterns=url_patterns, contexts=contexts)
187187
callback_id = self._on_request(event_name, callback)
188188

189189
if event_name in self.subscriptions:
@@ -213,7 +213,7 @@ def remove_request_handler(self, event, callback_id):
213213
net_event = NetworkEvent(event_name)
214214

215215
self.conn.remove_callback(net_event, callback_id)
216-
self.remove_intercept(self.callbacks[callback_id])
216+
self._remove_intercept(self.callbacks[callback_id])
217217
del self.callbacks[callback_id]
218218
self.subscriptions[event_name].remove(callback_id)
219219
if len(self.subscriptions[event_name]) == 0:
@@ -222,6 +222,20 @@ def remove_request_handler(self, event, callback_id):
222222
self.conn.execute(self.command_builder("session.unsubscribe", params))
223223
del self.subscriptions[event_name]
224224

225+
def clear_request_handlers(self):
226+
"""Clear all request handlers from the network."""
227+
228+
for event_name in self.subscriptions:
229+
net_event = NetworkEvent(event_name)
230+
for callback_id in self.subscriptions[event_name]:
231+
self.conn.remove_callback(net_event, callback_id)
232+
self._remove_intercept(self.callbacks[callback_id])
233+
del self.callbacks[callback_id]
234+
params = {}
235+
params["events"] = [event_name]
236+
self.conn.execute(self.command_builder("session.unsubscribe", params))
237+
self.subscriptions = {}
238+
225239
def add_auth_handler(self, username, password):
226240
"""Add an authentication handler to the network.
227241

py/test/selenium/webdriver/common/bidi_network_tests.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ def test_network_initialized(driver):
2828

2929
@pytest.mark.xfail_safari
3030
def test_add_intercept(driver, pages):
31-
result = driver.network.add_intercept()
31+
result = driver.network._add_intercept()
3232
assert result is not None, "Intercept not added"
3333

3434

3535
@pytest.mark.xfail_safari
3636
def test_remove_intercept(driver):
37-
result = driver.network.add_intercept()
38-
driver.network.remove_intercept(result["intercept"])
37+
result = driver.network._add_intercept()
38+
driver.network._remove_intercept(result["intercept"])
3939
assert driver.network.intercepts == [], "Intercept not removed"
4040

4141

@@ -55,6 +55,25 @@ def callback(request: Request):
5555
assert driver.find_element(By.NAME, "login").is_displayed(), "Request not continued"
5656

5757

58+
@pytest.mark.xfail_safari
59+
def test_clear_request_handlers(driver, pages):
60+
requests = []
61+
62+
def callback(request: Request):
63+
requests.append(request)
64+
65+
callback_id_1 = driver.network.add_request_handler("before_request", callback)
66+
assert callback_id_1 is not None, "Request handler not added"
67+
callback_id_2 = driver.network.add_request_handler("before_request", callback)
68+
assert callback_id_2 is not None, "Request handler not added"
69+
70+
driver.network.clear_request_handlers()
71+
72+
pages.load("formPage.html")
73+
assert not requests, "Requests intercepted"
74+
assert driver.find_element(By.NAME, "login").is_displayed(), "Request not continued"
75+
76+
5877
@pytest.mark.xfail_safari
5978
def test_continue_request(driver, pages):
6079

0 commit comments

Comments
 (0)