Selenium启动Google Chrome后立即闪退的问题求助
问题原因
你这段代码踩了三个访问带弹窗广告站点的常见坑,试多少方案都没用很正常:
- 窗口配置逻辑冲突:先调用
set_window_size(1920, 1080)又马上调maximize_window(),前者的设置会被直接覆盖,部分Chrome驱动版本下连续调用这两个接口会导致窗口句柄索引错乱 - 驱动写法过时:Selenium 4.6及以上版本自带驱动自动适配能力,手动传
executable_path很容易出现本地驱动和Chrome版本不匹配的问题,直接导致启动失败、页面加载异常 - 窗口切换逻辑无效:snaptik首次加载会弹出1-2个广告标签页,你写的1.5秒固定等待时间太短,很多时候广告还没弹出来你就切回第一个句柄,等后续操作元素的时候广告刚好加载完,焦点会自动切到广告页,所有定位操作全失效。
修复步骤
按下面改就能正常运行:
- 升级本地selenium到4.6以上版本,删掉手动传驱动路径的代码,让程序自动匹配对应版本的Chrome驱动
- 窗口设置二选一,要么固定尺寸要么最大化,不要两个接口连着调用
- 页面加载后等所有广告弹窗生成,把广告页全部关掉再切回目标页,别用固定时长的硬等待
修复后的可运行代码:
import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.ui import WebDriverWait option = Options() # 加反检测参数避免被站点拦截 option.add_argument("--disable-blink-features=AutomationControlled") option.add_experimental_option("excludeSwitches", ["enable-automation"]) option.add_experimental_option("useAutomationExtension", False) # 初始化驱动,不需要传executable_path driver = webdriver.Chrome(options=option) # 窗口配置二选一即可 driver.maximize_window() # driver.set_window_size(1920, 1080) driver.get('https://snaptik.app/en-us') # 最多等5秒,等所有广告弹窗加载完成 WebDriverWait(driver, 5).until(lambda d: len(d.window_handles) >= 1) time.sleep(0.5) # 倒序关闭所有广告标签页 for handle in reversed(driver.window_handles[1:]): driver.switch_to.window(handle) driver.close() # 切回目标主页面 driver.switch_to.window(driver.window_handles[0]) # 后续写你的业务逻辑即可
补充:如果还是启动失败,先把本地Chrome浏览器升级到最新正式版,驱动和浏览器大版本不匹配是这类问题最高发的诱因。
内容的提问来源于stack exchange,提问作者John Mors
相关产品推荐
相关产品推荐

