Я пытаюсь запустить PhantomJS
из selenium.webdriver
на сервере Centos. PhantomJS находится на пути и работает нормально с терминала. Однако в script он запускается, но потом не может быть достигнут на указанном порту (я пробовал 2 разных открытых порта у моего провайдера 29842 и 60099, они оба не работают и не запускают его без указанного порта).
Ошибка здесь происходит в selenium.webdriver.common.utils
:
try:
socket_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_.settimeout(1)
socket_.connect(("localhost", port))
socket_.close()
return True
except socket.error:
return False
Это из моего script (я пробовал без каких-либо параметров, а также записывал полный путь к исполняемому файлу и не работал):
self.browser = webdriver.PhantomJS(
port=29842,
desired_capabilities={
'javascriptEnabled': True,
'platform': 'windows',
'browserName': 'Mozilla',
'version': '5.0',
'phantomjs.page.settings.userAgent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36"
}
)
И это script, который инициализирует webdriver от selenium.webdriver.phantomjs.service
. Я проверил и subprocess.Popen
на самом деле lauches phantomjs, ошибка происходит в цикле while:
try:
self.process = subprocess.Popen(self.service_args,
stdout=self._log, stderr=self._log)
except Exception as e:
raise WebDriverException("Unable to start phantomjs with ghostdriver.", e)
count = 0
while not utils.is_connectable(self.port):
print utils.is_connectable(self.port)
count += 1
time.sleep(1)
if count == 30:
raise WebDriverException("Can not connect to GhostDriver")
Все пакеты являются последней версией: python 2.7, selenium 2 и phantomjs 1.9 двоичные с интегрированным ghostdriver. Я сделал тот же самый script правильно работающим на своей локальной машине Ubuntu, делая то же самое, что и на сервере. Что на сервере отличается?