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

SeleniumBase执行Gmail登录后自动关闭浏览器,PDB调试也无效

问题根源

你代码里的with SB(uc=True) as sb是上下文管理器,当login_to_gmail方法内的代码块执行完毕,上下文会自动销毁SB实例,连带关闭浏览器,导致后续的time.sleep和pdb调试完全没机会生效。另外你原代码里调用mr.login_to_gmail前没有实例化GMAIL_LOGIN类,这也是一个隐性问题。

解决方案

去掉with语句,手动创建并管理SB实例的生命周期,让浏览器不会自动关闭,直到你主动触发退出操作。

修改后的代码示例:

from seleniumbase import SB
from selenium.webdriver.chrome.service import Service
from selenium import webdriver
import time
import pdb

class GMAIL_LOGIN():
    def __init__(self, driver):
        self.driver = driver
        self.sl = SeleniumExtended(self.driver)
        # 将SB实例绑定为类属性,方便全局操作
        self.sb = SB(uc=True)

    def login_to_gmail(self, email, password):
        self.sb.open("https://www.google.com/gmail/about/")
        self.sb.click('a[data-action="sign in"]')
        self.sb.type('input[type="email"]', email)
        self.sb.click('button:contains("Next")')
        self.sb.sleep(5)
        self.sb.type('input[type="password"]', password)
        self.sb.click('button:contains("Next")')

    def close_browser(self):
        # 手动关闭浏览器的方法,按需调用
        self.sb.quit()

service = Service(executable_path=r"C:\Users\RoyMazin\Documents\BrowserDrivers\chromedriver.exe")
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)

# 先实例化类
mr = GMAIL_LOGIN(driver)
mr.login_to_gmail("example@gmail.com","Test1234!")

# 此时浏览器保持打开状态,可执行后续操作
time.sleep(5)
pdb.set_trace()

# 完成操作后手动关闭浏览器
mr.close_browser()
关键调整说明
  • 把SB实例绑定为类属性,在整个类的生命周期内都可以操作该浏览器实例
  • 新增close_browser方法,由你手动控制浏览器关闭时机
  • 补全了类实例化的步骤,修复原代码中直接调用方法的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:46:11