Selenium场景下用asyncio执行CDP命令所需vendor_prefix是多少?求示例
vendor_prefix 取值
Chrome/Chromium 驱动对应的vendor_prefix固定为goog,这是谷歌为自家WebDriver扩展命令预留的统一前缀。
接口使用说明
完整的CDP命令调用端点格式如下:POST /session/$sessionId/goog/cdp/execute
请求体需传入两个参数:
cmd:要执行的CDP命令全名,例如Page.navigate、Network.setUserAgentOverrideparams:对应CDP命令的参数对象,无参数时传空对象{}
asyncio 调用示例
以下是基于aiohttp的异步调用示例,需提前获取ChromeDriver服务地址和当前会话的sessionId:
import aiohttp import asyncio async def execute_cdp(driver_host: str, session_id: str, cdp_cmd: str, cdp_params: dict): """异步调用ChromeDriver CDP接口""" request_url = f"{driver_host}/session/{session_id}/goog/cdp/execute" async with aiohttp.ClientSession() as http_session: async with http_session.post( url=request_url, json={"cmd": cdp_cmd, "params": cdp_params} ) as resp: return await resp.json() # 调用示例 async def main(): # 替换为你的ChromeDriver实际地址 driver_service = "http://127.0.0.1:9515" # 替换为你的会话实际ID current_session_id = "abc123def456ghi789" # 示例:调用Network.setUserAgentOverride修改UA result = await execute_cdp( driver_host=driver_service, session_id=current_session_id, cdp_cmd="Network.setUserAgentOverride", cdp_params={"userAgent": "Custom UserAgent/1.0"} ) print("接口返回结果:", result) if __name__ == "__main__": asyncio.run(main())
补充说明
如果使用的是Edge浏览器的EdgeDriver,对应的vendor_prefix取值为ms,其他逻辑完全一致。
内容的提问来源于stack exchange,提问作者xyhlon
相关产品推荐
相关产品推荐

