This article is about simulating browsers to test your webpages. Contrary to a unit-test you check your whole page with this. That is also why I think this is the most cost/time efficient method. But also you probably won't see so much cornercases and won't find so much bugs as in unit testing.
Guide through this article
Probably the most widely known and perhaps most featurerrich. It supports multiple browsers (ie, chrome, firefox, htmlunit). It is also integrable as add-on into Firefox, which makes the creation of tests very easy. And it supports bindings to many different programming languages. I programmed with python+htmlunit on it and found it besides the later listed disadvantages quite nice. Good is that one has a simple api for multiple browsers.. So this framework is excellent for inter-browser tests.
Disadvantages I've found. * One can't resume a browser instance.. So when developing your script, you are forced to go through each step * One can't change the headers and adding cookies also works only _after_ a page was visited and then only are addable for this page * here and there the interface isn't so nice - filling out a form has no good api yet (for example to select from a select field one has to loop over each option - this could be done more nice)
I didn't test it because it is java, only integrated in selenium and there it seemed to work fine. I've read somewhere, that its js-engine isn't used in any other browser.. But through my experience I found it could work with the most common (jquery) js things quite good. Project page
Python bindings to webkit. The Api is extremely big and complex - but it is also very versatile. You can modify nearly everything. This is great, if you want more control, which selenium doesn't give to you. Project Page
I haven't looked into this, but want to mention it too. Project Page