In fact, you must know as to why Selenium is selected over PhantomJS because it does almost the same thing as any browser does. Using Selenium over CasperJS or ZombieJS is also possible. The result that you get is identical. It can automate browsers. But, you might also ask this question why you should use one over the other. Using Selenium over PhantomJS reveals that there are certain cases wherein using Selenium can give specific advantages over the use of a headless toolkit. You must also know that I have used by running headless Selenium with the Chrome browser as well. There are 5 reasons as to why I selected Selenium over PhantomJS. These reasons are given below.
1. Easier Development With Inspect Element
I did not have any knowledge as to what HTML element is which I required to code for writing automation against other pages. Hence, I started writing code to develop a website by using a UI option. This I did it by right clicking on some portion of the page. Further, I selected the HTML element, which I was looking for and it worked well.
3. When the Website Makes Use Of Strange Browser Detection
Here you can give an example of particular use cases where in you intend to scrap website. In fact, I had an opportunity to find websites which give you slightly different HTML in place of an existing browser. This I noticed even after I made this change. You must know that this is possible with the help of a user-agent string. What I guess is that there might be an attempt to detect features of HTMLS or a flash plugin. From the perspective of an SEO option, the change in HTML is not much when I consider a negative or a cloak. Hence, you must note that a real browser is the only option that worked for me.
4. I actually required Flash
ZeroClipboard is considered as one of the features which are used here. This works partially through the usage of an invisible Flash movie. Hence, by default, I will require a real browser to make this type of test workable.
5. When You Are Looking For the Features Of A Specific Browser
You must know that I have not used Selenium in this manner, but I require it often. Some of the features which I plan to work on involve steps like uploading files, printing from Web Pages, opening separate windows, tab switching, and use of browser plugins.
Some features which I plan to work right now include all these steps. In the unit tests, all these features are covered. Besides, you must note that I also propose testing these items manually for features as they are considered more important. Further, I also expect that this process is considered as a better method so that you can automate these tests. However, I again say that I always use Selenium, which is meant for specific cases of development. This is because it is the correct option as I find it works perfectly.