You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Chrome窗口执行driver.close或打开新标签时置顶干扰问题求助

解决Selenium Chrome操作时抢占窗口焦点/切换桌面的问题
  • 把Chrome窗口移到屏幕外(完全不干扰前台)
    启动Chrome时将窗口位置设置到屏幕可视区域外,操作窗口时不会在当前桌面显示,也不会抢占焦点。代码示例:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    # 将窗口移至屏幕左上角外,数值可根据屏幕分辨率调整,确保完全不可见
    chrome_options.add_argument("--window-position=-32000,-32000")
    # 可选:设置窗口大小,避免默认尺寸过大
    chrome_options.add_argument("--window-size=800,600")
    
    driver = webdriver.Chrome(options=chrome_options)
    

    后续切换广告窗口、调用driver.close()等操作都不会影响前台游戏或其他窗口。

  • 启用Chrome无头模式(无界面后台运行)
    若无需可视化Chrome界面,启用新版无头模式即可完全在后台运行,不会弹出窗口或抢占焦点:

    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)
    

    此方法彻底解决焦点干扰问题,适合不需要可视化的测试场景。

  • 禁止Chrome窗口自动激活(可视化场景适配)
    通过Chrome实验性参数阻止窗口自动获取焦点,部分参数需根据Chrome版本调整:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    chrome_options = Options()
    # 禁用自动化提示相关开关,减少窗口激活触发
    chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
    chrome_options.add_experimental_option("useAutomationExtension", False)
    # 添加阻止窗口获得焦点的参数
    chrome_options.add_argument("--no-focus-on-launch")
    chrome_options.add_argument("--disable-features=VizDisplayCompositor")
    
    driver = webdriver.Chrome(options=chrome_options)
    

    注意:部分参数可能随Chrome版本迭代失效,需结合实际环境测试调整。

  • 操作后恢复游戏窗口焦点(兜底方案)
    若上述方法无效,可通过Windows API强制恢复游戏窗口焦点,需先安装pywin32库:

    import win32gui
    import win32con
    from selenium import webdriver
    
    def restore_game_window(window_title):
        # 根据窗口标题查找游戏窗口句柄
        hwnd = win32gui.FindWindow(None, window_title)
        if hwnd:
            # 先最小化再恢复,确保成功获取焦点(适配部分游戏)
            win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)
            win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)
            win32gui.SetForegroundWindow(hwnd)
    
    # 初始化Chrome驱动
    driver = webdriver.Chrome()
    
    # 操作广告窗口并关闭后,恢复游戏窗口
    driver.switch_to.window(ad_window_handle)
    driver.close()
    driver.switch_to.window(main_window_handle)
    # 替换为你的游戏窗口准确标题
    restore_game_window("游戏窗口标题")
    

    此方法需知晓游戏窗口的准确标题,适合必须保留Chrome可视化的场景。

内容的提问来源于stack exchange,提问作者Faucet Crypto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:24:29