Ответ 1
Попробуйте установить phantomjs с npm: https://www.npmjs.com/package/phantomjs. Я использую Mac OS X, и у меня была аналогичная проблема с использованием selenium и django.
У меня есть unit test, который проходит, когда я запускаю его через python manage.py test
, но не удается, когда я запускаю его из PyCharm.
def test_alpha(self):
from selenium.webdriver.common.utils import free_port
from selenium import webdriver
driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=free_port())
driver.quit()
Исключением, которое я получаю при запуске из PyCharm, является
WebDriverException: Message: 'Can not connect to GhostDriver'
Я потратил немало времени на изучение этой проблемы, и я заметил, что когда я указываю порт вручную, тест проходит в PyCharm.
# suppose 50000 happens to be a free port on your computer
driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=50000)
Чтобы быстро найти:
python manage.py test
port=free_port()
Что такое PyCharm, который делает тест неспособным подключиться к Ghostdriver?
# For convenience, the `free_port()` code snippet is here
# selenium.webdriver.common.utils.freeport
def free_port():
free_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
free_socket.bind(('127.0.0.1', 0))
free_socket.listen(5)
port = free_socket.getsockname()[1]
free_socket.close()
return port
Попробуйте установить phantomjs с npm: https://www.npmjs.com/package/phantomjs. Я использую Mac OS X, и у меня была аналогичная проблема с использованием selenium и django.
Возможно, что-то в настройках вашего терминала влияет на работу сети.
Попробуйте запустить PyCharm из своего терминала:
open -a /Applications/PyCharm.app/
Затем снова запустите тест, и он должен пройти.
Источник: сводка комментариев @CrazyCoder