Selenium 3 python: add listener for Chrome DevTools network event
I think you can't do this in Selenium 3. In Selenium 3 add_listener
doesn't look like the addListener
in Java. Seems it only receives Console.ERROR
Console.ALL
and Console.Log
as paramater.
@asynccontextmanager async def add_listener(self, event_type): ''' Listens for certain events that are passed in. :Args: - event_type: The type of event that we want to look at. :Usage: :: async with driver.add_listener(Console.log) as messages: driver.execute_script("console.log('I like cheese')") assert messages["message"] == "I love cheese" ''' assert sys.version_info >= (3, 7) global cdp from selenium.webdriver.common.bidi.console import Console async with self._get_bidi_connection(): global devtools session = cdp.get_session_context('page.enable') await session.execute(devtools.page.enable()) session = cdp.get_session_context('console.enable') await session.execute(devtools.console.enable()) console = { "message": None, "level": None } async with session.wait_for(devtools.console.MessageAdded) as messages: yield console if event_type == Console.ERROR: if messages.value.message.level == "error": console["message"] = messages.value.message.text console["level"] = messages.value.message.level elif event_type == Console.ALL: console["message"] = messages.value.message.text console["level"] = messages.value.message.level
Also, this seems not to be supported in Selenium 4 so far.