@@ -35,8 +35,11 @@ def __init__(self, driver):
3535 self .driver = driver
3636 self .intercept = None
3737 self .scope = None
38+ self .conn = None
3839
3940 async def add_request_handler (self , request_filter = lambda _ : True , handler = default_request_handler , conn = None ):
41+ if not self .conn :
42+ self .conn = conn
4043 with trio .CancelScope () as scope :
4144 self .scope = scope
4245 self .network = network .Network (conn )
@@ -45,9 +48,17 @@ async def add_request_handler(self, request_filter=lambda _: True, handler=defau
4548 result = await self .network .add_intercept (event = BeforeRequestSent , params = params )
4649 intercept = result ["intercept" ]
4750 self .intercept = intercept
48- await self .network . add_listener (event = BeforeRequestSent , callback = callback )
51+ await self .add_listener (event = BeforeRequestSent , callback = callback )
4952 return intercept
5053
54+ async def add_listener (self , event , callback ):
55+ listener = self .conn .listen (event )
56+
57+ async for event in listener :
58+ request_data = BeforeRequestSentParameters .from_json (event .to_json ()["params" ])
59+ if request_data .isBlocked :
60+ await callback (request_data )
61+
5162 async def get (self , url , conn ):
5263 params = NavigateParameters (context = self .driver .current_window_handle , url = url , wait = "complete" )
5364 await conn .execute (Navigate (params ).cmd ())
0 commit comments