В чем преимущество phantomjs перед selenium?
PhantomJS - полностью headless-браузер, не требует X11 Server или DXGI, таким образом потребляет меньше ресурсов и работает на порядок быстрее (но медленнее ZombieJS разумеется). Недостатками при этом являются отсутствие поддержки Flash, старая версия JavaScript-движка V8, старая версия Webkit - из последних двух причин следует, что отсутствует поддержка новых технологий HTML5 - из чего следует не все сайты работают корректно. В ZombieJS дела еще хуже, он вообще со многими сайтами не работает, т.е. для парсинга не подойдет, для тестирования может подойти, но готовтесь к тому что придется отлаживать сам ZombieJS.
Selenium может работать как с полностью headless-браузерами PhantomJS, SlimerJS, TrifleJS, ZombieJS, так и с обычными браузерами Chrome, Firefox, Opera, Internet Explorer (последние потребляют очень много ресурсов и обычно поднимают Selenium-ферму). При этом используется единый протокол общения с браузерами JsonWireProtocol (Webdriver Protocol) через extension или через их управляющие модули (xul-runner). Таким образом, пишется один код не привязанный к конкретному браузеру, а тестируется в нескольких браузерах. Но конечно у каждого браузера есть свои особенности и Selenium их не покрывает, и поэтому все равно приходится под каждый браузер дописывать слой кода совместимости. Если же тесты простые: заполнить поля, отметить галочку, добавить файл, нажать на кнопку или ссылку тут, то Selenium подойдет.
Грубо говоря на PhantomJS 99% сайтов будет работать как в Chrome, но 1% сайтов будут работать с ошибками. Но насколько я понимаю это лишь важно если вы пытаетесь scrape-ить один из сайтов попадающих в этот 1% :)
Если ваша компания маленькая, то рекомендую легковесные технологии ZombieJS, PhantomJS, Mocha, если ваша компания крупная, есть большой штат сисадминов, тимлидов, архитектов, то рекомендую тяжеловесные масштабируемые технологии Docker, Vagrant, Selenium, Jenkis CI.
phantomjs - headless-браузер.
selenium - если упрощать, средство управления браузером посредствам скриптов.
Следовательно, если у нас есть селениум, то нам нужен браузер. PhantomJS для этого годится, подключаем драйвер нужный и вперед. Если же у нас есть только PhantomJS можно управлять им из API который он предоставляет. Но это не так удобно и всеравно обычно используют отдельные приложения для автоматизации.