Node.js Selenium IPv6问题(SocketException协议系列不可用)

Mar*_*ska 12 javascript node.js selenium-webdriver

仅当我将ios驱动程序 jar作为Node.js子项生成时才会发生此错误.

错误是 java.net.SocketException: Protocol family unavailable

硒test.js:

var spawn = require('child_process').spawn;

var selenium = spawn('java', ['-jar', './ios-server-standalone-0.6.6-SNAPSHOT.jar', '-port', '4444']);
selenium.stderr.setEncoding('utf8');
selenium.stderr.on('data', function (data){
  console.log(data);
});
Run Code Online (Sandbox Code Playgroud)

webdriverjs-test.js(webdriverjs)

var webdriverjs = require('webdriverjs');
var options = {
    desiredCapabilities: {
        browserName: 'safari',
        platform: 'OS X 10.9',
        version: '7.1',
        device: 'iphone'
    }
};

webdriverjs
  .remote(options)
  .init()
  .end();
Run Code Online (Sandbox Code Playgroud)

通过创建上述文件重现此错误,在一个窗口中运行selenium-test.js,在另一个窗口中运行webdriverjs-test.js.你首先需要npm install webdriverjscurl -O http://ios-driver-ci.ebaystratus.com/userContent/ios-server-standalone-0.6.6-SNAPSHOT.jar

版本信息:

$ java version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

$ node -v
v0.10.26
Run Code Online (Sandbox Code Playgroud)

为什么会发生此错误以及如何解决?

Mar*_*ska 5

我设法通过使生成的子句忽略stdin来解决这个问题:

var selenium = spawn('java', ['-jar', './ios-server-standalone-0.6.6-SNAPSHOT.jar', '-port', '4444'], {stdio: ['ignore', null, null]});

我不确定为什么这个解决方法有效.