当我将ios-driver 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);
});
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 webdriverjs
和curl -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
为什么会发生此错误以及如何解决?
答案 0 :(得分:5)
我设法通过使衍生的孩子忽略stdin来解决这个问题:
var selenium = spawn('java', ['-jar', './ios-server-standalone-0.6.6-SNAPSHOT.jar', '-port', '4444'], {stdio: ['ignore', null, null]});
我不确定为什么这种解决方法有效。
答案 1 :(得分:2)
我对此并不了解,到目前为止,我发现这可能是java的绑定问题。更多细节在以下链接:(这不是更新的信息,它可能导致回答)
http://diario.beerensalat.info/2008/10/12/java_and_ipv6_on_bsd.html
如果情况并非如此,因为这篇文章建议将其更改为更高端口应该有效。 "Protocol family unavailable" error while using VisualVM