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

使用Selenium打开浏览器后立即关闭,如何实现浏览器持续打开?

解决Selenium中Chrome浏览器自动关闭的问题

方法1:保留WebDriver实例的引用

你的代码里,browser和youtube是函数内的局部变量,函数执行完毕后这些变量会被Python的垃圾回收机制销毁,导致浏览器自动关闭。把它们赋值为类的实例变量,就能避免被立即回收:

def open_chrome(self):        
    self.browser = webdriver.Chrome()
    self.browser.get('https://www.google.com.br')

def open_youtube(self):
    self.youtube = webdriver.Chrome()
    self.youtube.get('https://www.youtube.com.br')

这样WebDriver实例会被类的实例持有引用,浏览器会保持打开状态,直到你主动调用self.browser.quit()或self.youtube.quit(),或者类实例被销毁。

方法2:使用ChromeOptions添加detach参数

通过配置Chrome的实验性参数detach,可以让浏览器在WebDriver进程结束后依然保持打开状态,无需依赖变量引用:

from selenium.webdriver.chrome.options import Options

def open_chrome(self):        
    chrome_options = Options()
    chrome_options.add_experimental_option("detach", True)
    browser = webdriver.Chrome(options=chrome_options)
    browser.get('https://www.google.com.br')

def open_youtube(self):
    chrome_options = Options()
    chrome_options.add_experimental_option("detach", True)
    youtube = webdriver.Chrome(options=chrome_options)
    youtube.get('https://www.youtube.com.br')

启用这个参数后,即使函数执行完毕,浏览器窗口也会保留,需要你手动关闭窗口,或者后续调用browser.quit()来关闭。

方法3:让主进程保持运行(脚本场景)

如果你的代码是独立脚本,可以在调用完打开浏览器的函数后,让主进程保持运行,避免程序直接退出:

if __name__ == "__main__":
    # 假设你的类名为BrowserOpener
    opener = BrowserOpener()
    opener.open_chrome()
    opener.open_youtube()
    input("按回车键关闭所有浏览器...")  # 等待用户输入,阻止进程退出
    opener.browser.quit()
    opener.youtube.quit()

这种方式可以让浏览器一直打开,直到你主动触发关闭操作,相比sleep()更加灵活,不会浪费不必要的等待时间。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 01:27:39