We've used both JWebUnit and HttpUnit in the past to do functional tests of web applications. Both of them seem to have issues in handling javascript. We are not particularly interested in testing the javascript at this point, but JWebUnit and HttpUnit tests have broken since we added some small Ajax components (Dojo Date / Time pickers for instance) to our pages.
Selenium and Watir do not fit because they essentially drive browsers and we are running these tests from CruiseControl on a box where we are not allowed to install a browser.