Josh,
That is correct, and is one of the primary reasons we started this mailing list. Selenium is a fantastic browser automation tool, but it does a terrible job at capturing performance metrics. You are right: it only really knows when onload events fire or when certain elements appear in the DOM (visible, in the DOM, text present, etc).
Fortunately, other projects exist that can help. For IE, Pat Meenan and friends have built a fantastic tool called PageTest (hosted version available at
http://webpagetest.org). It does an excellent job of capturing lots of really nice metrics inside of IE, including domReady, renderStart, onLoad, all the low-level object timings, and even a "filmstrip" showing how the page loaded. And best of all, it's all open source.
Unfortunately, the biggest challenge right now is that PageTest and Selenium don't play very nice together at the moment. PageTest has its own basic browser automation toolkit, but Pat Meenan has mentioned that he feels it's a bit simplistic compared to what Selenium can do. This mailing list was meant to help get us (Selenium developers and PageTest developers) working together to achieve that. We're not there yet, but we'd like to. Perhaps Pat can chime in with more thoughts.
For Firefox, there is Firebug + the NetExport plugin. It can spit out all the data in the Net panel of Firebug, which is pretty detailed. For an example of how to integrate Selenium 2 (aka WebDriver) check out the browsermob-page-perf project here:
The code is really simply - you don't have to use the project but can borrow the ideas. The key thing is to set up the FirefoxProfile with the proper Firebug and NetExport plugins pre-installed. Then when the browser closes, you need to make sure you grab that HAR file. In this project, we upload it to some basic "HAR server", but you can of course do whatever you want.
For all other browsers (or even Firefox and IE if you want consistency), the browsermob-proxy project might be of interest:
It's not 100% there yet (we're going to release some updates to it soon), but the idea is that it is a daemon process similar to Fiddler that is cross platform and can programmatically spin up additional ports (for concurrent browser sessions), capture detailed network traffic, etc. It will *not* be able to capture onload or DOM ready or anything else like that, and of course a proxy does inject some "observer effect", though we've found it's pretty darn accurate.
Hopefully that gives you some ideas to run with, and maybe it'll spawn some conversations on this list :)
Patrick