Selenium Firefox WebDriver连接被拒绝问题求助(AWS CentOS7环境)
我之前在CentOS 7上部署Selenium+Firefox的时候也遇到过一模一样的问题,这个connection refused错误几乎都是因为geckodriver缺失或者版本不兼容导致的——毕竟Selenium 3.x开始已经不再内置Firefox的驱动了,必须单独安装匹配的geckodriver才行。结合你的环境(Firefox 52.6.0、Selenium 3.8.1、Python2.7),给你一步步的解决方法:
1. 确认geckodriver是否已安装
先在服务器上执行命令检查:
geckodriver --version
如果提示command not found,说明你还没安装geckodriver,这就是问题的核心。
2. 下载并安装匹配版本的geckodriver
Firefox 52.x对应的geckodriver版本是v0.19.0(这个版本和你的Selenium 3.8.1、Firefox 52.6.0完全兼容),执行以下命令安装:
# 下载对应版本的geckodriver wget https://github.com/mozilla/geckodriver/releases/download/v0.19.0/geckodriver-v0.19.0-linux64.tar.gz # 解压压缩包 tar -xvzf geckodriver-v0.19.0-linux64.tar.gz # 将geckodriver移动到系统PATH目录,让Python能找到它 mv geckodriver /usr/local/bin/ # 赋予执行权限 chmod +x /usr/local/bin/geckodriver
3. 调整你的Python脚本(可选,但更保险)
如果系统PATH没有正确识别geckodriver,可以在脚本里直接指定它的路径,修改webdriver.Firefox()这一行:
browser = webdriver.Firefox(executable_path='/usr/local/bin/geckodriver')
4. 检查并补充Firefox的依赖
CentOS 7默认可能缺少Firefox运行需要的X11相关依赖,虽然你用了pyvirtualdisplay,但还是建议安装以下包确保环境完整:
yum install -y xorg-x11-server-Xvfb libX11-devel libXext-devel libXrender-devel
5. 验证环境是否正常
先单独测试geckodriver是否能运行:
geckodriver
如果输出类似169xxxxxxxxx geckodriver INFO Listening on 127.0.0.1:4444,说明geckodriver正常。
再测试Firefox能否在无头模式启动:
firefox --headless --no-sandbox --disable-gpu http://www.vionblog.com/
如果没有报错,说明Firefox环境没问题。
做完这些步骤后,再运行你的脚本,应该就能正常启动Firefox并执行自动化操作了。
内容的提问来源于stack exchange,提问作者Himanshu Tewari

