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

Jenkins运行Selenium Safari自动化测试无法启动Safari问题求助

解决Jenkins Slave运行Selenium Safari测试无法打开浏览器的问题

结合你描述的情况(本地运行正常,Jenkins Slave执行时出现连接拒绝),这大概率是Mac系统的权限管控、Safari自动化配置或者Jenkins运行环境的问题,我给你一步步排查的方案:

1. 确认Safari的远程自动化权限开启

Mac对Safari的自动化有严格的权限要求,而且Jenkins运行的用户(通常是jenkins系统用户)和你本地用户的权限是完全分开的,所以要确保Jenkins用户能操作Safari:

  • 通过远程桌面连接到你的Mac虚拟机,用终端执行sudo su - jenkins切换到Jenkins用户(输入系统密码确认)
  • 打开Safari浏览器,依次点击:偏好设置 -> 高级 -> 勾选「在菜单栏中显示开发菜单」
  • 点击顶部菜单栏的开发选项,勾选「允许远程自动化」
  • 关闭Safari再重新打开,确保设置生效

2. 检查SafariDriver的权限与兼容性

Mac自带的SafariDriver路径是/usr/bin/safaridriver,需要确保Jenkins用户有执行权限:

  • 在终端执行:
    ls -l /usr/bin/safaridriver
    
    正常权限应该是-rwxr-xr-x,如果权限不对,执行:
    sudo chmod +x /usr/bin/safaridriver
    
  • 另外要确认版本兼容:你的系统是Mac OS X 10.13.4,对应的Safari版本是11.1左右,建议使用Selenium 3.141.59这个稳定版本,避免版本不匹配导致的启动失败。

3. 确保Jenkins Slave运行在图形化会话中

Safari是GUI应用,如果Jenkins Slave是作为后台服务(LaunchDaemon)运行的,它没有访问桌面环境的权限,自然打不开浏览器:

  • 你需要把Jenkins Slave配置为LaunchAgent(用户会话级别的服务),这样它才能获取到桌面上下文
  • 或者手动在Mac虚拟机的图形界面下,用Jenkins用户打开终端直接运行测试脚本,如果手动运行能打开Safari,那基本就是Jenkins运行方式的问题,调整为用户会话启动即可

4. 排查SafariDriver的启动问题

错误日志里的Connection refused说明Selenium无法连接到SafariDriver的端口,你可以手动测试SafariDriver是否能正常启动:

  • 切换到Jenkins用户,在终端执行:
    /usr/bin/safaridriver -p 16788
    
    如果启动失败,终端会给出具体错误(比如权限不足、端口被占用等),根据错误信息修复即可;如果能正常启动,再运行测试脚本看是否能连接成功

额外注意:Mac安全设置的拦截

有时候Mac的安全性与隐私设置会阻止Jenkins或SafariDriver的自动化操作,你可以打开系统偏好设置 -> 安全性与隐私 -> 隐私标签,检查:

  • 「自动化」选项里,是否允许你的测试脚本或Jenkins控制Safari
  • 「完全磁盘访问权限」里,是否给Jenkins用户或相关应用授权

按照上面的步骤排查,应该能解决你遇到的问题,如果还有具体报错,可以补充出来再进一步分析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:20:04