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

JavaScript+Selenium测试NW.js应用启动报错求助:SessionNotCreatedError

解决NW.js exe应用的Selenium自动化连接问题

你遇到的SessionNotCreatedError核心原因是NW.js未开启DevTools调试端口,导致ChromeDriver无法建立有效连接。以下是具体修复方案:

关键配置要点

  • 版本严格匹配:ChromeDriver版本必须与NW.js内置的Chromium版本完全一致(可通过NW.js官方文档查询对应版本,下载匹配的ChromeDriver)
  • 强制开启调试端口:启动NW.js时必须指定调试端口参数,让ChromeDriver能识别并连接
  • 路径绝对化:NW.exe的路径建议使用绝对路径,避免相对路径引发的识别错误

修复后的完整脚本

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

async function testNwApp() {
    const options = new chrome.Options();
    // 指定NW.exe的绝对路径,替换为你实际的路径
    options.setChromeBinaryPath('C:/your-project-path/dist/src/nw.exe');
    // 添加NW.js启动参数:开启调试端口、禁用沙箱(Windows环境必填)
    options.addArguments('--remote-debugging-port=9222');
    options.addArguments('--no-sandbox');
    options.addArguments('--disable-gpu'); // 可选,规避GPU相关兼容性问题

    let driver;
    try {
        driver = await new Builder()
            .forBrowser('chrome')
            .setChromeOptions(options)
            .build();
        
        // 等待NW应用完全加载,时间可根据应用复杂度调整
        await driver.sleep(2000);
        
        // 定位输入框并执行输入操作
        const inputElement = await driver.findElement(By.id("input"));
        await inputElement.sendKeys("San Francisco");
    } catch (err) {
        console.error('测试执行失败:', err);
    } finally {
        if (driver) {
            await driver.sleep(1000);
            await driver.quit();
        }
    }
}

testNwApp();

额外注意事项

  • 打包后的NW应用需确保package.json的main字段正确指向src/views/index.html,保证应用启动后自动加载目标页面
  • 若出现端口占用提示,可更换--remote-debugging-port的端口号(如9223)
  • Windows环境下若遇到权限问题,尝试以管理员身份运行脚本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:10:55