节点.js硒 IPv6 问题(套接字异常协议系列不可用)

Node.js Selenium IPv6 Issue (SocketException Protocol family unavailable)

本文关键字:系列 协议 异常 套接字 js IPv6 问题 节点      更新时间:2023-09-26
此错误

仅在我将 ios 驱动程序 jar 生成为 Node.js 子级时发生。

错误java.net.SocketException: Protocol family unavailable

硒测试.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);
});

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();

通过创建一个上述文件,在一个窗口中运行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

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

我设法通过让生成的孩子忽略标准来解决这个问题:

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

我不确定为什么这种解决方法有效。

我对此没有太多想法,到目前为止,我发现这可能是与 Java 绑定的问题。更多详情请见以下链接:(不是更新信息,可能会给出答案)

http://diario.beerensalat.info/2008/10/12/java_and_ipv6_on_bsd.html

如果不是这种情况,正如这篇文章建议的那样,将其更改为更高的端口应该可以工作。使用 VisualVM 时出现"协议系列不可用"错误