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

NodeJS+Selenium环境PhantomJS driver无法创建会话问题求助

问题排查与解决步骤
  • 确认Selenium Grid节点可识别PhantomJS二进制文件
    你当前代码通过usingServer连接了本地4444端口的Selenium Hub,仅将phantomjs.exe放到项目目录无效,Grid的工作节点是独立的Java进程,无法直接读取项目目录的文件。解决方式二选一:

    1. 将phantomjs.exe所在目录添加到系统环境变量PATH中,重启Selenium Hub和节点
    2. 启动Selenium工作节点时显式指定PhantomJS路径,命令如下:
    java -jar selenium-server-standalone-3.141.59.jar -role node -phantomjsBinary "C:\完整路径\phantomjs.exe"
    

    如果你没有搭建Grid、只是本地直连运行,可以直接删除代码中的usingServer配置,后续直接在代码中指定二进制路径即可。

  • 补全代码的Capabilities配置
    仅修改forBrowser的参数无法满足PhantomJS的启动要求,需要显式传入对应配置,修改后代码参考:

const webdriver = require('selenium-webdriver');
// 需提前安装对应依赖:npm install selenium-webdriver phantomjs-prebuilt

const capabilities = webdriver.Capabilities.phantomjs();
// 本地运行可直接指定二进制路径,用Grid模式可省略此配置、在节点侧统一配置
capabilities.set("phantomjs.binary.path", "C:\完整路径\phantomjs.exe");

const driver = new webdriver.Builder()
  .withCapabilities(capabilities)
  .usingServer("http://localhost:4444/wd/hub") // 非Grid模式可删除此行
  .build();
  • 校验版本兼容性
    PhantomJS早已停止维护,最终版本为2.1.1,仅支持Selenium 3.x系列,你当前使用的3.141.59版本适配,不要升级到Selenium 4+,该版本已完全移除PhantomJS的原生支持。
替代方案推荐

PhantomJS对2018年后的前端新特性兼容性很差,实际爬取效率并不高于现代浏览器的无头模式。你可以直接使用Chrome无头模式,无需更换核心逻辑,仅需添加启动参数即可,性能和兼容性更优,参考代码:

const { Builder } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');

const options = new chrome.Options();
options.addArguments('--headless=new'); // Chrome 112+版本的原生无头模式,行为和有头模式完全一致
options.addArguments('--disable-gpu');
options.addArguments('--no-sandbox');
options.addArguments('--disable-dev-shm-usage');

const driver = new Builder()
  .forBrowser("chrome")
  .setChromeOptions(options)
  .usingServer("http://localhost:4444/wd/hub")
  .build();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:06:02