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
相关产品推荐
相关产品推荐

