1515# specific language governing permissions and limitations
1616# under the License.
1717from dataclasses import fields
18-
18+ import trio
1919from selenium .webdriver .common .bidi import network
2020from selenium .webdriver .common .bidi .browsing_context import Navigate , NavigateParameters
2121from selenium .webdriver .common .bidi .network import (
@@ -35,23 +35,27 @@ def __init__(self, driver):
3535 self .network = None
3636 self .driver = driver
3737 self .intercept = None
38+ self .scope = None
3839
3940 async def add_request_handler (self , request_filter = lambda _ : True , handler = default_request_handler , conn = None ):
40- self .network = network .Network (conn )
41- params = AddInterceptParameters (["beforeRequestSent" ])
42- callback = self ._callback (request_filter , handler )
43- result = await self .network .add_intercept (event = BeforeRequestSent , params = params )
44- intercept = result ["intercept" ]
45- self .intercept = intercept
46- await self .network .add_listener (event = BeforeRequestSent , callback = callback )
47- return intercept
41+ with trio .CancelScope () as scope :
42+ self .scope = scope
43+ self .network = network .Network (conn )
44+ params = AddInterceptParameters (["beforeRequestSent" ])
45+ callback = self ._callback (request_filter , handler )
46+ result = await self .network .add_intercept (event = BeforeRequestSent , params = params )
47+ intercept = result ["intercept" ]
48+ self .intercept = intercept
49+ await self .network .add_listener (event = BeforeRequestSent , callback = callback )
50+ return intercept
4851
4952 async def get (self , url , conn ):
5053 params = NavigateParameters (context = self .driver .current_window_handle , url = url )
5154 await conn .execute (Navigate (params ).cmd ())
5255
5356 async def remove_request_handler (self ):
5457 await self .network .remove_intercept (event = BeforeRequestSent , params = network .RemoveInterceptParameters (self .intercept ))
58+ self .scope .cancel ()
5559
5660 def _callback (self , request_filter , handler ):
5761 async def callback (request ):
0 commit comments