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

Selenium WebDriver:Safari 16.x以上版本在测试框架中启动后崩溃

解决思路

1. 排查依赖冲突

  • 框架集成了多套依赖库,大概率存在Selenium相关依赖版本不一致的问题,比如Cucumber、TestNG或Allure引入了旧版Selenium组件,和指定的4.11.0版本冲突。
  • 执行mvn dependency:tree(Maven项目)或./gradlew dependencies(Gradle项目)梳理依赖树,找出重复或版本不符的Selenium相关包(如selenium-safari-driver、selenium-java),强制统一为4.11.0版本。

2. 简化SafariDriver初始化逻辑

  • 独立项目可正常运行,说明框架的初始化流程可能干扰了SafariDriver。先在框架中用最基础的代码启动浏览器,排查是否是额外配置导致崩溃:
    SafariOptions options = new SafariOptions();
    WebDriver driver = new SafariDriver(options);
    
  • 再逐步添加框架中的配置(如TestNG监听器、Allure截图钩子),定位触发崩溃的具体配置项。

3. 排查ReportPortal/Allure的会话监听问题

  • ReportPortal和Allure都会对WebDriver会话进行监听或代理,可能和Safari16.x以上的新特性(如会话隔离、权限控制)存在兼容性问题。
  • 临时禁用ReportPortal的WebDriver集成,或关闭Allure的自动截图/会话追踪功能,测试是否还会崩溃。若问题消失,再针对性调整工具配置,比如更新ReportPortal代理适配版本,或修改Allure监听器逻辑。

4. 调整JVM参数与Safari权限

  • OpenJDK17的JVM参数可能和Safari16.x的沙箱机制冲突,尝试添加--add-opens java.base/java.lang=ALL-UNNAMED或--add-opens java.desktop/com.apple.eawt=ALL-UNNAMED参数,避免反射权限问题导致驱动崩溃。
  • 确认MacOS权限:打开「系统设置」→「隐私与安全性」→「自动化」,确保OpenJDK17的Java进程被允许控制Safari。

5. 升级Selenium版本

  • Selenium 4.11.0可能对Safari16.x以上版本存在未修复的适配问题,尝试升级到最新稳定版(如4.15.0+),新版本通常会修复浏览器兼容漏洞。

6. 分析崩溃转储信息

  • 从崩溃日志来看,崩溃发生在com.apple.WebKit.WebContent进程,核心是WebInspector模块出错,说明驱动与Safari的调试协议交互存在问题。
  • 尝试在SafariOptions中禁用调试协议相关配置,比如添加options.setCapability("safari:useSimulator", false)(若使用模拟器),或开启Safari开发者模式,检查调试连接是否正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 06:06:12