AWS EC2上Selenium WebDriver报错:无法获取浏览器驱动及语法错误
解决AWS EC2上Selenium Manager执行报错"Syntax error: "(" unexpected"的问题
核心原因分析
这个报错大概率是Selenium Manager二进制文件与EC2实例架构不匹配导致的:旧VPS和WSL2一般是x86_64架构,而AWS部分实例(比如t4g系列)用的是ARM64(aarch64)架构。当系统尝试运行不兼容的二进制文件时,会误将其当作Shell脚本解析,从而抛出语法错误。
具体解决方案
1. 确认EC2实例架构
先执行命令确认当前实例的CPU架构:
uname -m
- 输出
x86_64:x86架构 - 输出
aarch64:ARM64架构
2. 重新安装匹配架构的Selenium Webdriver
删除现有不兼容的依赖,重新安装对应版本:
# 删除现有selenium-webdriver目录 rm -rf node_modules/selenium-webdriver # 根据架构安装 # ARM64架构 npm install selenium-webdriver@^4.12.0 --force --arch=arm64 # x86_64架构 npm install selenium-webdriver@^4.12.0
3. 手动替换Selenium Manager二进制(如果自动安装失败)
如果重新安装后问题依旧,手动替换对应架构的二进制文件:
- 获取对应4.12.0版本的Selenium Manager二进制(ARM64或x86_64版本)
- 替换目标文件并添加执行权限:
chmod +x /home/ubuntu/myproj/source/node_modules/selenium-webdriver/bin/linux/selenium-manager
4. 验证二进制文件可用性
直接执行二进制文件测试是否正常:
/home/ubuntu/myproj/source/node_modules/selenium-webdriver/bin/linux/selenium-manager --version
如果能正常输出版本号,说明二进制已适配,再重新运行项目即可。
5. 确认Node.js架构一致性
确保Node.js版本与EC2架构匹配:
node -p process.arch
- ARM64实例对应输出
arm64 - x86_64实例对应输出
x64
如果不匹配,重新安装对应架构的Node.js 18.17.1版本。
内容的提问来源于stack exchange,提问作者vin5dev
相关产品推荐
相关产品推荐

