如何阻止Headless Chrome弹出同步XMLHttpRequest弃用提示?
解决Selenium无头Chrome中同步XHR弃用提示的问题
我来帮你搞定这个烦人的控制台提示!要阻止同步XMLHttpRequest的弃用警告在Selenium无头Chrome的控制台里弹出,有两种实用的方法,你可以根据需求选择:
方法一:全局屏蔽警告级别的日志(简单粗暴)
这种方式通过Chrome命令行参数直接将日志级别设为ERROR,这样所有警告和信息级别的日志都会被屏蔽,包括你不想看到的同步XHR提示。
具体代码实现:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 启用新版无头模式(推荐,行为更接近正常Chrome) chrome_options.add_argument("--headless=new") # 设置日志级别为3,对应ERROR级别,屏蔽警告、信息、调试日志 chrome_options.add_argument("--log-level=3") # 初始化驱动 driver = webdriver.Chrome(options=chrome_options) # 后续的爬取操作...
方法二:精准拦截特定警告(灵活不影响其他日志)
如果你不想错过其他有用的警告信息,只想屏蔽这个同步XHR的弃用提示,可以通过Chrome DevTools协议(CDP)来监听并过滤特定的控制台消息。
代码示例:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--headless=new") driver = webdriver.Chrome(options=chrome_options) # 启用控制台监听 driver.execute_cdp_cmd('Console.enable', {}) # 定义过滤函数,只拦截目标警告 def filter_sync_xhr_warning(message): target_msg = "Synchronous XMLHttpRequest on the main thread is deprecated" if target_msg in message['message']: # 过滤掉该警告,不做任何处理 return # 其他消息可以正常输出(如果需要的话) print(message['message']) # 添加监听器,处理控制台消息 driver.add_listener(filter_sync_xhr_warning, 'Console.messageAdded') # 后续爬取操作...
小提示
- 新版无头模式(
--headless=new)是Chrome 96+推出的,相比旧版--headless更接近正常浏览器的行为,推荐优先使用。 - 如果用的是旧版无头模式,只需要把
--headless=new换成--headless即可,其他配置不变。
内容的提问来源于stack exchange,提问作者Myusico
相关产品推荐
相关产品推荐

