ClericPy / ichrome

Chrome controller for Humans, based on Chrome Devtools Protocol(CDP) and python3.7+.
https://pypi.org/project/ichrome/
MIT License
227 stars 29 forks source link

怎么获得websocket数据 #105

Closed zenghh closed 1 year ago

zenghh commented 1 year ago
            await tab.send("Network.enable")
            await tab.wait_event(
                "Network.webSocketFrameReceived",
                timeout=10,
                callback_function=f,
            )

这样只能获得一次webSocketFrameReceived数据,我要持续捕获的话,怎么弄

ClericPy commented 1 year ago

两种方式吧

  1. 最原生的方式, 给 tab 添加一个默认回调函数. 不推荐, 但是这个是最底层的 AsyncTab 对象有一个 default_recv_callback 方法, 这个其实就是每次 recv 到新东西时候执行一次的. 这是个 property, 实际上是个 Callback list, 所以赋值时候只要 tab.default_recv_callback = [callback] 就行了

回调函数只读一个参数 data_dict, 也就是来自 ws 发来的全部事件 JSON 解析后的字典

  1. 使用我已经封装好的上下文, 也就是 tab.iter_events, https://clericpy.github.io/ichrome/reference/AsyncTab/#ichrome.async_utils.AsyncTab.iter_events 在这个上下文里面, 会不断迭代指定 Event 名称的数据, 例子见文档