使用Selenium调用ChromeDriver时报错,浏览器窗口一闪即逝求助
兄弟,我之前也碰到过几乎一模一样的问题,咱们一步步来排查和解决,应该能搞定!
首先得理清楚几个核心问题:你看到的STUN服务器错误大概率是网络原因(Chrome默认连谷歌的STUN服务器,国内访问不了),GPU错误一般是显卡加速的兼容性问题,而窗口一闪而过最直接的原因是脚本执行完就自动销毁了Driver对象,浏览器跟着被关闭。
给你几个具体的解决步骤,按顺序试试:
先解决窗口一闪的问题(最直观)
脚本跑完后没有任何停留逻辑,Driver对象被回收后浏览器就直接关了。你可以在代码最后加个停留逻辑,比如:# 方式1:固定停留10秒,足够你查看页面 import time time.sleep(10) # 方式2:等待你手动输入再关闭,更灵活 input("看完页面后按回车键关闭浏览器...")或者直接给ChromeOptions加个配置,让浏览器不自动关闭:
options.add_experimental_option("detach", True)解决STUN服务器连接错误
这个错误是Chrome尝试连接谷歌的STUN服务器失败导致的,我们可以直接禁用WebRTC相关功能,避免这个无效请求:options.add_argument("--disable-webrtc") # 或者更彻底一点 options.add_argument("--disable-features=WebRTC,MediaStreamCapture")解决GPU状态错误
很多时候本地显卡驱动或者环境不支持Chrome的GPU加速,直接禁用就好:options.add_argument("--disable-gpu") # 如果不需要可视化页面,也可以用无头模式,运行更稳定 # options.add_argument("--headless=new")检查ChromeDriver和Chrome版本是否匹配!
这个是很多人忽略的关键!必须保证你下载的ChromeDriver版本和本地安装的Chrome浏览器版本完全一致(比如Chrome是119.0.6045.105,ChromeDriver也要是同版本)。你可以打开Chrome的「设置-关于Chrome」查看版本,然后下载对应版本的驱动。简化驱动路径
你现在的驱动路径太长了,容易出现路径解析问题,建议把chromedriver.exe放到一个简单的路径下,比如C:\chromedriver.exe,然后修改代码里的路径:service = Service(executable_path=r'C:\chromedriver.exe')
最后给你整合好的完整代码,你可以直接试试:
from selenium import webdriver from selenium.webdriver.chrome.service import Service import time # 配置Chrome选项 options = webdriver.ChromeOptions() # 禁用GPU加速 options.add_argument("--disable-gpu") # 禁用WebRTC避免STUN错误 options.add_argument("--disable-webrtc") # 让浏览器保持打开不自动关闭 options.add_experimental_option("detach", True) # 简化后的驱动路径 service = Service(executable_path=r'C:\chromedriver.exe') driver = webdriver.Chrome(service=service, options=options) url = 'https://shopee.co.th' driver.get(url) # 停留10秒观察页面 time.sleep(10) # 手动关闭浏览器(如果加了detach,这行可以注释掉) # driver.quit()
如果还是不行,试试以管理员身份运行你的脚本,或者检查防火墙有没有阻止ChromeDriver的网络请求,应该就能解决了!
备注:内容来源于stack exchange,提问作者Reaper Furry

