Eles estão atacando problemas diferentes. Como o PhantomJS roda perfeitamente na linha de comando, é adequado como a primeira camada de teste de fumaça, seja como parte do fluxo de trabalho de desenvolvimento e / ou em um servidor de integração contínuo. O Selenium tem como alvo vários navegadores e, portanto, é muito útil garantir a consistência entre navegadores e realizar testes extensivos em diferentes sistemas operacionais.
Se o seu aplicativo da web precisar ser executado em vários navegadores, a execução do teste da interface do usuário apenas com o PhantomJS não produzirá a maior cobertura de teste. No entanto, é perfeitamente bom iniciar o PhantomJS e exercitar algumas verificações básicas de sanidade antes de fazer os testes detalhados. Imagine a loucura de testar um aplicativo financeiro em que a tela de login é acidentalmente quebrada e não funciona!
Observe que a linha entre os dois fica um pouco embaçada com o suporte recente ao WebDriver no PhantomJS mais recente. Agora é possível executar rapidamente os testes primeiro usando o PhantomJS e, em seguida (assumindo que não haja erro grave), continue executando os mesmos testes completamente em uma configuração do Selenium.