【发布时间】:2014-04-03 04:05:25
【问题描述】:
仅当我将 ios-driver jar 作为 Node.js 子级生成时才会发生此错误。
错误是java.net.SocketException: Protocol family unavailable
selenium-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
为什么会发生这个错误,我该如何解决?
【问题讨论】:
-
主持
var selenium = spawn('java', ['-jar', './ios-server-standalone-0.6.6-SNAPSHOT.jar', '-port', '4444', '-host', '127.0.0.1']);? -
刚试过。发生同样的问题。
-
您的环境中有没有 -Djava.net.preferIPv4Stack=true 的 JAVA_OPTS。这可能是一个原因。也尝试将它们传递给您的子进程。看到这个question
-
我不这么认为。我可以在我的 shell 和子 shell 中检查
env的输出,它们几乎相同。
标签: javascript node.js selenium-webdriver