I'm currently using [Selenium](http://en.wikipedia.org/wiki/Selenium_%28software%29) for testing our web application's interface. However, it isn't very reliable (it's hard to set a good waiting timeout, absolutely a nightmare to work with in any webpages involving frames) and lacks many features (popups/downloads).

I took a look at <http://sikuli.csail.mit.edu/> and quite like it, but again, it isn't very reliable as in very often it fails to identify the correct buttons/links.

What is a good approach for testing web applications?

PS: I'm after the ones that would allow for testing even if the tester has ZERO knowledge about the internal of the codes (not even the method signatures).