selenium.common.exceptions.WebDriverException: Сообщение: «Не удается подключиться к GhostDriver»
Я пытаюсь бежатьPhantomJS
изнутриselenium.webdriver
на сервере Centos. PhantomJS находится в пути и работает правильно с терминала. Однако в сценарии он, кажется, запускается, но впоследствии не может быть достигнут по указанному порту (я пробовал 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
Это из моего скрипта (я пробовал без каких-либо параметров, а также записал полный путь к исполняемому файлу, и ни один не работал):
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"
}
)
И этот скрипт, который инициализирует веб-драйвер изselenium.webdriver.phantomjs.service
, Я проверил иsubprocess.Popen
фактически запускает 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, Selen 2 и Phantomjs 1.9 двоичный с интегрированным Ghostdriver. Я заставил тот же сценарий работать должным образом на моем локальном компьютере с Ubuntu, выполняя те же действия, что и на сервере. Чем отличается на сервере?