We tried phantomjs for a while but it was very unstable (regularly crashed and since it's open source, bug reports often go ignored, even with stack traces), undocumented behavior, and fairly unusual ecosystem. I believe phantom made a fundamental mistake of not being nodejs based in the first place. Phantom has some really nice features though, like being able to read the console output. Selenium is kind of a joke in terms of features, but at least it's stable. I would choose selenium unless you get a specific benefit out of phantomjs.