Mac环境下调用.close()无法关闭Safari浏览器问题求助
Safari中WebDriver.close()无法关闭浏览器的原因及解决办法
原因分析
Safari的WebDriver实现和Chrome、Firefox等主流浏览器存在差异:
close()方法在Safari里仅负责关闭当前标签页,当浏览器只剩最后一个标签页时,它不会自动关闭整个浏览器窗口;而其他浏览器在关闭最后一个标签页时会直接终止浏览器进程。- 若未正确开启Safari的远程自动化权限,也会导致WebDriver无法完全控制浏览器窗口的关闭操作。
解决方案
改用
quit()方法替代close()quit()会终止整个WebDriver会话,关闭所有关联的浏览器窗口,这是Safari下关闭浏览器最可靠的方式:@then('Close the browser') def step_impl(context): context.driver.quit()开启Safari远程自动化权限
- 打开Safari偏好设置,进入「高级」选项卡,勾选「在菜单栏中显示“开发”菜单」。
- 点击顶部菜单栏的「开发」,选择「允许远程自动化」。
按需处理标签页与窗口(可选)
如果需要先关闭单个标签页,再在最后一个标签页时关闭浏览器,可以添加判断逻辑:@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
相关产品推荐
相关产品推荐

