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

Mac环境下调用.close()无法关闭Safari浏览器问题求助

Safari中WebDriver.close()无法关闭浏览器的原因及解决办法

原因分析

Safari的WebDriver实现和Chrome、Firefox等主流浏览器存在差异:

  • close()方法在Safari里仅负责关闭当前标签页,当浏览器只剩最后一个标签页时,它不会自动关闭整个浏览器窗口;而其他浏览器在关闭最后一个标签页时会直接终止浏览器进程。
  • 若未正确开启Safari的远程自动化权限,也会导致WebDriver无法完全控制浏览器窗口的关闭操作。

解决方案

  1. 改用quit()方法替代close()
    quit()会终止整个WebDriver会话,关闭所有关联的浏览器窗口,这是Safari下关闭浏览器最可靠的方式:

    @then('Close the browser')
    def step_impl(context):
        context.driver.quit()
    
  2. 开启Safari远程自动化权限

    • 打开Safari偏好设置,进入「高级」选项卡,勾选「在菜单栏中显示“开发”菜单」。
    • 点击顶部菜单栏的「开发」,选择「允许远程自动化」。
  3. 按需处理标签页与窗口(可选)
    如果需要先关闭单个标签页,再在最后一个标签页时关闭浏览器,可以添加判断逻辑:

    @then('Close the browser')
    def step_impl(context):
        # 获取当前窗口数量
        window_count = len(context.driver.window_handles)
        if window_count > 1:
            context.driver.close()  # 关闭当前标签页
        else:
            context.driver.quit()   # 关闭浏览器
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 21:12:02