Node.js Selenium IPv6 Issue (Семейство протоколов SocketException недоступно)
Эта ошибка возникает, когда я создаю 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
Почему эта ошибка возникает и как ее исправить?
Ответы
Ответ 1
Мне удалось решить это, сделав порожденного ребенка игнорировать stdin:
var selenium = spawn('java', ['-jar', './ios-server-standalone-0.6.6-SNAPSHOT.jar', '-port', '4444'], {stdio: ['ignore', null, null]});
Я не уверен, почему это обходное решение работает.
Ответ 2
У меня нет большой идеи об этом, что до сих пор я обнаружил, что это может быть проблемой, связанной с java. Более подробная информация приведена в следующей ссылке: (Это не обновленная информация, это может привести к ответу)
http://diario.beerensalat.info/2008/10/12/java_and_ipv6_on_bsd.html
Если это не так, поскольку этот пост предлагает изменить его на более высокий порт, он должен работать.
"Семейство протоколов недоступно" при использовании VisualVM